;;; ROM offsets 038010 - 03c00f

; Shop text pointers
8000: 4c 80        .DW $804c
8002: 53 80        .DW $8053
8004: 5a 80        .DW $805a
8006: 60 80        .DW $8060
8008: 66 80        .DW $8066
800a: 6d 80        .DW $806d
800c: 74 80        .DW $8074
800e: 7b 80        .DW $807b
8010: 82 80        .DW $8082
8012: 85 80        .DW $8085
8014: 8c 80        .DW $808c
8016: 98 80        .DW $8098
8018: a0 80        .DW $80a0
801a: b7 80        .DW $80b7
801c: c8 80        .DW $80c8
801e: d2 80        .DW $80d2
8020: d9 80        .DW $80d9
8022: ee 80        .DW $80ee
8024: ff 80        .DW $80ff  ; unused?
8026: 0b 81        .DW $810b
8028: 1e 81        .DW $811e
802a: 39 81        .DW $8139  ; unused?
802c: 44 81        .DW $8144  ; unused?
802e: 4e 81        .DW $814e
8030: 65 81        .DW $8165  ; unused?
8032: 71 81        .DW $8171
8034: 97 81        .DW $8197
8036: bb 81        .DW $81bb
8038: dc 81        .DW $81dc
803a: fc 81        .DW $81fc
803c: 21 82        .DW $8221
803e: 48 82        .DW $8248  ; unused?
8040: 5b 82        .DW $825b
8042: 71 82        .DW $8271
8044: 8b 82        .DW $828b
8046: ad 82        .DW $82ad
8048: c8 82        .DW $82c8  ; unused?
804a: d1 82        .DW $82d1

; Shop texts
804c: a0 8e 8a 99 98 97 00                                   ; WEAPON
8053: 8a 9b 96 98 9b ff 00                                   ; "ARMOR "
805a: a0 96 8a 4a 8c 00                                      ; WMAGIC
8060: 8b 96 8a 4a 8c 00                                      ; BMAGIC
8066: 8c 95 92 97 92 8c 00                                   ; CLINIC
806d: ff 92 97 97 ff ff 00                                   ; " INN  "
8074: ff 92 9d 8e 96 ff 00                                   ; " ITEM "
807b: 98 8a 9c 92 9c ff 00                                   ; "OASIS "
8082: ff 90 00                                               ; " G"
8085: a0 a8 af a6 b2 34 00                                   ; Welcome
808c: 8b b8 bc 01 9c a8 4e 01 8e bb 5b 00                    ; Buy\\Sell\\Exit
8098: 8b b8 bc 01 8e bb 5b 00                                ; Buy\\Exit
80a0: a2 b2 b8 05 a6 a4 b1 be b7 05 a6 a4 b5 b5 bc 05 a4 b1 bc b0 b2 23 00 ; You\can't\carry\anymore
80b7: a0 ab a4 21 a7 b2 05 bc b2 b8 05 ba a4 b1 b7 c5 00     ; What do\you\want?
80c8: 01 90 b2 af a7 01 98 94 c5 00                          ; \\Gold\\OK?
80d2: a2 a8 b6 01 97 b2 00                                   ; Yes\\No
80d9: a2 b2 b8 05 a6 a4 b1 be b7 05 a4 a9 a9 35 a7 05 b7 ab 39 c0 00 ; You\can't\afford\that.
80ee: a0 ab b2 05 ba ac 4e 05 b7 a4 ae a8 05 ac b7 c5 00     ; Who\will\take\it?
80ff: 10 00 05 11 00 05 12 00 05 13 00 00                    ; <W1 name>\<W2 name>\<W3 name>\<W4 name>
810b: 9d ab 22 ae 05 bc b2 b8 c4 05 a0 ab 39 05 a8 af 3e c5 00 ; Thank\you!\What\else?
811e: a0 ab b2 3e 05 ac b7 a8 b0 05 a7 b2 50 26 05 ba a4 b1 b7 1b b2 05 b6 a8 4e c5 00 ; Whose\item\do you\want to\sell?
8139: a0 ab ac a6 ab 05 b2 b1 a8 c5 00                       ; Which\one?
8144: 9d ab 22 ae 05 bc b2 b8 c4 00                          ; Thank\you!
814e: a0 ab b2 05 ba ac 4e 05 af a8 2f b1 05 b7 ab a8 05 b6 b3 a8 4e c5 00 ; Who\will\learn\the\spell?
8165: a0 ab ac a6 ab 05 b6 b3 a8 4e c5 00                    ; Which\spell?
8171: 9c b2 b5 b5 bc bf 05 a2 b2 b8 05 a6 a4 b1 be b7 05 af a8 2f b1 05 b7 ab 39 c0 05 9c b2 34 3c a8 05 a8 af 3e c5 00 ; Sorry,\You\can't\learn\that.\Someone\else?
8197: a2 b2 b8 05 a4 af 23 a4 a7 bc 05 ae b1 46 05 b7 ab 39 05 b6 b3 a8 4e c0 05 9c b2 34 3c a8 05 a8 af 3e c5 00 ; You\already\know\that\spell.\Someone\else?
81bb: a0 a8 af a6 b2 34 05 ff ff 69 05 9c b7 a4 bc bf 05 b7 b2 24 a4 32 05 bc b2 55 05 a7 a4 b7 a4 c0 00 ; Welcome\  ....\Stay,\to save\your\data.
81dc: 8d b2 b1 be b7 05 a9 b2 b5 66 b7 bf 05 ac a9 50 26 05 af a8 a4 32 05 bc b2 55 05 aa a4 34 bf 00 ; Don't\forget,\if you\leave\your\game,
81fc: 91 b2 af a7 05 9b 8e 9c 8e 9d 05 ba ab ac 45 05 bc b2 b8 05 b7 b8 b5 b1 05 99 98 a0 8e 9b 05 b2 a9 a9 c4 c4 00 ; Hold\RESET\while\you\turn\POWER\off!!
8221: a2 b2 b8 05 ab a4 32 05 b1 b2 1c 1f aa 05 b7 b2 24 a8 4e 05 ff ff 69 05 8a b1 bc c2 05 b7 ab 1f aa 05 a8 af 3e c5 00 ; You\have\nothing\to sell\  ....\Any-\thing\else?
8248: 94 a8 a8 b3 36 b1 05 b7 b5 bc 1f aa 05 aa b8 bc b6 69 00 ; Keep on\trying\guys....
825b: a0 ab b2 05 b6 ab a4 4e 05 a5 a8 05 b5 a8 b9 ac 32 a7 05 c3 c3 00 ; Who\shall\be\revived\....
8271: a0 8a 9b 9b 92 98 9b 05 c3 c3 05 9b a8 b7 55 b1 05 b7 b2 05 af ac a9 a8 c4 00 ; WARRIOR\....\Return\to\life!
828b: 9d ab 30 05 af a8 32 af 05 b6 b3 a8 4e 05 ac b6 43 b8 4e 05 c3 c3 05 9c b2 34 3c a8 05 a8 af 3e c5 00 ; This\level\spell\is full\....\Someone\else?
82ad: a2 b2 64 a7 b2 05 b1 b2 b7 05 b1 a8 a8 27 b0 bc 05 ab a8 af b3 05 b1 b2 ba c0 00 ; You do\not\need my\help\now.
82c8: 95 a8 2f b1 01 8e bb 5b 00                             ; Learn\\Exit
82d1: 9d b2 2e a5 a4 a7 05 c3 c3 05 9c b2 34 c2 05 b7 ab 1f aa 05 a8 af 3e c5 00 ; Too bad\....\Some-\thing\else?

; Garbage?
82ea: 00 b1 aa 05 a8 af b6 a8 c5 00 00 00 00 00 00 00
82fa: 00 00 00 00 00 00

; Shop pointers
8300: 8e 83        .DW $838e  ; ???
8302: 8f 83        .DW $838f  ; Coneria Weapon
8304: ad 83        .DW $83ad  ; Pravoka Weapon
8306: cd 83        .DW $83cd
8308: f9 83        .DW $83f9
830a: 11 84        .DW $8411
830c: 31 84        .DW $8431
830e: 8e 83        .DW $838e
8310: 8e 83        .DW $838e
8312: 8e 83        .DW $838e
8314: 8e 83        .DW $838e
8316: 95 83        .DW $8395  ; Coneria Armor
8318: b2 83        .DW $83b2  ; Pravoka Armor
831a: d3 83        .DW $83d3
831c: fe 83        .DW $83fe
831e: 16 84        .DW $8416
8320: 33 84        .DW $8433
8322: 8e 83        .DW $838e
8324: 8e 83        .DW $838e
8326: 8e 83        .DW $838e
8328: 8e 83        .DW $838e
832a: 99 83        .DW $8399  ; Coneria White Magic
832c: b8 83        .DW $83b8  ; Pravoka White Magic
832e: d9 83        .DW $83d9
8330: 04 84        .DW $8404
8332: 1c 84        .DW $841c
8334: e3 83        .DW $83e3
8336: 36 84        .DW $8436
8338: 3c 84        .DW $843c
833a: 4f 84        .DW $844f
833c: 63 84        .DW $8463
833e: 9e 83        .DW $839e  ; Coneria Black Magic
8340: bd 83        .DW $83bd  ; Pravoka Black Magic
8342: de 83        .DW $83de
8344: 09 84        .DW $8409
8346: 21 84        .DW $8421
8348: e8 83        .DW $83e8
834a: 39 84        .DW $8439
834c: 40 84        .DW $8440
834e: 52 84        .DW $8452
8350: 65 84        .DW $8465
8352: a3 83        .DW $83a3  ; Coneria Clinic
8354: ed 83        .DW $83ed  ; Pravoka Clinic
8356: 26 84        .DW $8426
8358: 44 84        .DW $8444
835a: 55 84        .DW $8455
835c: c2 83        .DW $83c2
835e: 8e 83        .DW $838e
8360: 8e 83        .DW $838e
8362: 8e 83        .DW $838e
8364: 8e 83        .DW $838e
8366: a6 83        .DW $83a6  ; Coneria Inn
8368: c5 83        .DW $83c5  ; Pravoka Inn
836a: f0 83        .DW $83f0
836c: 0e 84        .DW $840e
836e: 29 84        .DW $8429
8370: 47 84        .DW $8447
8372: 58 84        .DW $8458
8374: 8e 83        .DW $838e
8376: 8e 83        .DW $838e
8378: 8e 83        .DW $838e
837a: a9 83        .DW $83a9  ; Coneria Item
837c: c8 83        .DW $83c8  ; Pravoka Item
837e: f3 83        .DW $83f3
8380: 2c 84        .DW $842c
8382: 4a 84        .DW $844a
8384: 5b 84        .DW $845b
8386: 8e 83        .DW $838e
8388: 8e 83        .DW $838e
838a: 8e 83        .DW $838e
838c: 61 84        .DW $8461

838e: 00                      ; ???
838f: 1e 1d 1c 1f 20 00       ; Coneria Weapon
8395: 44 45 46 00             ; Coneria Armor
8399: b0 b1 b2 b3 00          ; Coneria White Magic
839e: b4 b5 b6 b7 00          ; Coneria Black Magic
83a3: 28 00 00                ; Coneria Clinic (50 G)
83a6: 1e 00 00                ; Coneria Inn (30 G)
83a9: 19 1a 16 00             ; Coneria Item
83ad: 20 21 22 23 00          ; Pravoka Weapon
83b2: 45 46 47 54 64 00       ; Pravoka Armor
83b8: b8 b9 ba bb 00          ; Pravoka White Magic
83bd: bc bd be bf 00          ; Pravoka Black Magic
83c2: 50 00 00                ; Pravoka Clinic (80 G)
83c5: 32 00 00                ; Pravoka Inn (50 G)
83c8: 19 1a 16 17 00          ; Pravoka Item
83cd: 24 25 26 27 2c 00       ; 
83d3: 47 4e 55 5d 5e 00       ; 
83d9: c0 c1 c2 c3 00          ; 
83de: c4 c5 c6 c7 00          ; 
83e3: c8 c9 ca cb 00          ; 
83e8: cc cd ce cf 00          ; 
83ed: c8 00 00                ; 
83f0: 64 00 00                ; 
83f3: 19 1a 17 18 1b 00       ; 
83f9: 26 27 28 2a 00          ; 
83fe: 48 4f 5f 65 66 00       ; 
8404: d0 d1 d2 d3 00          ; 
8409: d4 d5 d6 d7 00          ; 
840e: 64 00 00                ; 
8411: 2b 2c 2d 2e 00          ; 
8416: 49 56 5b 60 67 00       ; 
841c: d8 d9 da db 00          ; 
8421: dc dd de df 00          ; 
8426: 90 01 00                ; 
8429: c8 00 00                ; 
842c: 19 1a 17 18 00          ; 
8431: 3e 00                   ; 
8433: 50 6b 00                ; 
8436: e0 e1 00                ; 
8439: e4 e5 00                ; 
843c: e9 ea eb 00             ; 
8440: ed ee ef 00             ; 
8444: ee 02 00                ; 
8447: f4 01 00                ; 
844a: 17 18 19 1a 00          ; 
844f: e2 e3 00                ; 
8452: e6 e7 00                ; 
8455: ee 02 00                ; 
8458: 2c 01 00                ; 
845b: 17 18 19 1a 1b 00       ; 
8461: 0f 00                   ; 
8463: e8 00                   ; 
8465: ec 00                   ; 

; Garbage?
8467:                      ff ff ff ff ff ff ff ff ff
8470: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 

; Display 'copyright' lines on title screen
8480: 20 19 a2     JSR $a219  ; Load menu screen tiles and palettes, disp off, clear screen
8483: 2c 02 20     BIT $2002
8486: a2 00        LDX #$00
8488: 20 8b 84     JSR $848b
848b: bd a7 84     LDA $84a7,X
848e: 8d 06 20     STA $2006
8491: bd a6 84     LDA $84a6,X
8494: 8d 06 20     STA $2006
8497: e8           INX
8498: e8           INX
8499: bd a6 84     LDA $84a6,X
849c: f0 06        BEQ +$06  [$84a4]
849e: 8d 07 20     STA $2007
84a1: e8           INX
84a2: d0 f5        BNE +$f5  [$8499]
84a4: e8           INX
84a5: 60           RTS

84a6: 28 23        .DW $2328
84a8: 8c ff 81 89 88 87 ff 9c 9a 9e 8a 9b 8e ff ff 00        ; "C 1987 SQUARE  "
84b8: 48 23        .DW $2348
84ba: 8c ff 81 89 89 80 ff 97 92 97 9d 8e 97 8d 98 00        ; C 1990 NINTENDO

; Reset the game on start (will skip intro though)
84ca: a9 00        LDA #$00
84cc: 8d fa 00     STA $00fa
84cf: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
84d2: a5 20        LDA $20
84d4: 29 10        AND #$10
84d6: d0 01        BNE +$01  [$84d9]
84d8: 60           RTS
84d9: 4c 00 c0     JMP $c000   ; Restart the game

84dc: 20 89 c6     JSR $c689   ; Start music or play current notes
84df: a5 24        LDA $24
84e1: 60           RTS

; Garbage?
84e2:       00 00 00 00 00 00 00 00 00 00 00 00 00 00
84f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

; Menu text pointers
8500: 80 85        .DW $8580
8502: 81 85        .DW $8581
8504: 85 85        .DW $8585
8506: a7 85        .DW $85a7
8508: ad 85        .DW $85ad
850a: ba 85        .DW $85ba
850c: d9 85        .DW $85d9
850e: f3 85        .DW $85f3
8510: 01 86        .DW $8601
8512: 15 86        .DW $8615
8514: 30 86        .DW $8630
8516: 3e 86        .DW $863e
8518: 48 86        .DW $8648
851a: 56 86        .DW $8656
851c: 71 86        .DW $8671
851e: 7e 86        .DW $867e
8520: 9e 86        .DW $869e
8522: bd 86        .DW $86bd
8524: df 86        .DW $86df
8526: ed 86        .DW $86ed
8528: 0e 87        .DW $870e
852a: 38 87        .DW $8738
852c: 53 87        .DW $8753
852e: 70 87        .DW $8770
8530: 7b 87        .DW $877b
8532: 94 87        .DW $8794
8534: a6 87        .DW $87a6
8536: cc 87        .DW $87cc
8538: dd 87        .DW $87dd
853a: 03 88        .DW $8803
853c: 14 88        .DW $8814
853e: 49 88        .DW $8849
8540: 66 88        .DW $8866
8542: 78 88        .DW $8878
8544: 8b 88        .DW $888b
8546: a7 88        .DW $88a7
8548: ab 88        .DW $88ab
854a: b2 88        .DW $88b2
854c: b9 88        .DW $88b9
854e: dc 88        .DW $88dc
8550: 18 89        .DW $8918
8552: 4b 89        .DW $894b
8554: 4f 89        .DW $894f
8556: 07 8a        .DW $8a07
8558: 19 8a        .DW $8a19
855a: 4d 8a        .DW $8a4d
855c: 65 8a        .DW $8a65
855e: 77 8a        .DW $8a77
8560: 97 8a        .DW $8a97
8562: b3 8a        .DW $8ab3
8564: de 8a        .DW $8ade
8566: fb 8a        .DW $8afb
8568: 18 8b        .DW $8b18
856a: 1e 8b        .DW $8b1e
856c: 33 8b        .DW $8b33
856e: 37 8b        .DW $8b37
8570: 38 8b        .DW $8b38
8572: 3c 8b        .DW $8b3c
8574: 3d 8b        .DW $8b3d
8576: 41 8b        .DW $8b41
8578: 42 8b        .DW $8b42
857a: 46 8b        .DW $8b46
857c: 47 8b        .DW $8b47
857e: 4d 8b        .DW $8b4d

8580: 00                                                     ; ""
8581: 04 ff 90 00                                            ; <04> G
8585: ff 92 9d 8e 96 01 ff 96 8a 90 92 8c 01 ff cf d0 d1 d2 d3 01 ff 8a 9b 96 98 9b 01 ff ca cb cc cd ce 00 ; " ITEM\\ MAGIC\\ WEAPON\\ ARMOR\\ STATUS"
85a7: 92 9d 8e 96 ff 00                                      ; "ITEM "
85ad: a2 b2 64 41 b9 1a b1 b2 1c 1f aa c0 00                 ; You have nothing.
85ba: 9d ab 1a b7 b8 b1 1a b3 af a4 bc b6 bf 05 b5 a8 b9 2b af 1f aa 20 24 b7 a4 ac b5 5d bc c0 00 ; The tune plays,\revealing a stairway.
85d9: 8b a8 a4 b8 57 a9 b8 af 42 b8 b6 ac a6 43 ac 4e b6 05 b7 ab 1a a4 ac b5 c0 00 ; Beautiful music fills\the air.
85f3: 9d ab 1a b6 28 45 29 8c 9b 98 a0 97 c0 00              ; The stolen CROWN.
8601: 8a ff a5 a4 4e 42 a4 a7 1a 4c ff 8c 9b a2 9c 9d 8a 95 c0 00 ; A ball made of CRYSTAL.
8615: a2 b8 a6 ae c4 ff 9d 3d 1e 34 a7 ac a6 1f a8 05 ac b6 1b b2 2e a5 5b b7 25 c4 00 ; Yuck! This medicine\is too bitter!
8630: 9d ab 1a b0 bc 37 ac a6 ff 94 8e a2 c0 00              ; The mystic KEY.
863e: 8b a8 38 a4 23 a9 b8 af c4 00                          ; Be careful!
8648: 9d ab 1a 45 aa 3a a7 2f 4b 34 b7 5f c0 00              ; The legendary metal.
8656: 9e b1 ae b1 46 b1 24 bc b0 a5 b2 af 1e a6 b2 b9 25 05 b7 ab 1a 9c 95 8a 8b c0 00 ; Unknown symbols cover\the SLAB.
8671: 8a ff af 2f aa 1a 23 a7 24 28 5a c0 00                 ; A large red stone.
867e: 9d ab 1a b3 af 39 1a b6 ab 39 b7 25 b6 bf 05 b5 a8 b9 2b af 1f aa 20 24 b7 a4 ac b5 5d bc c4 00 ; The plate shatters,\revealing a stairway!
869e: 9d ab 1a 9b 98 8d 1b 2e 23 b0 b2 b9 1a 1c a8 05 b3 af 39 1a a9 b5 49 1b ab 1a 2b b5 1c c0 00 ; The ROD to remove the\plate from the earth.
86bd: 9d ab 1a 8a 92 9b 9c 91 92 99 31 a8 aa 1f b6 1b b2 05 b5 ac b6 1a a9 b5 49 1b ab 1a a7 2c 25 b7 c0 00 ; The AIRSHIP begins to\rise from the desert.
86df: 8a ff b0 bc 37 25 ac 26 1e 4d a6 ae c0 00              ; A mysterious rock.
86ed: 9c b7 a4 b0 b3 a8 27 3c 1b ab 1a a5 b2 b7 28 b0 69 05 96 8a 8d 8e ff 92 97 ff 95 8e 8f 8e 92 97 00 ; Stamped on the bottom....\MADE IN LEFEIN
870e: 98 98 91 91 c4 c4 ff 92 21 37 1f ae b6 c4 05 9d ab b5 46 2d 21 b2 b9 25 69 05 97 b2 c4 ff 8d 3c be 21 a7 b2 1b ab 39 c4 c4 00 ; OOHH!! It stinks!\Throw it over....\No! Don't do that!!
8738: 8c b2 af 35 1e aa a4 1c 25 20 3b 05 b6 ba ac b5 58 1f 1b ab 1a 8c 9e 8b 8e c0 00 ; Colors gather and\swirl in the CUBE.
8753: 99 b2 b3 c4 ff 8a 43 a4 ac b5 bc 20 b3 b3 2b 63 bf 05 b7 ab a8 29 ac 1e aa 3c a8 c0 00 ; Pop! A fairy appears,\then is gone.
8770: 92 b7 2d 1e a8 b0 b3 b7 bc c0 00                       ; It is empty.
877b: 9d ab 1a 98 a1 a2 8a 95 8e 43 55 b1 30 1d b6 05 a9 b5 2c ab 20 ac b5 c0 00 ; The OXYALE furnishes\fresh air.
8794: a2 b2 b8 38 22 ff a6 4d b6 b6 1b ab 1a 5c b9 25 c0 00  ; You can cross the river.
87a6: 91 99 ff 23 a6 b2 32 23 a7 c0 ff 9c 8a 9f 8e c5 05 99 b8 b6 ab ff 8a 69 a2 8e 9c 05 99 b8 b6 ab ff 8b 69 97 98 00 ; HP recovered. SAVE?\Push A....YES\Push B....NO
87cc: a2 b2 b8 38 22 b1 b2 21 b8 b6 1a ac 21 1d 23 c4 00     ; You cannot use it here!
87dd: 91 99 ff 23 a6 b2 32 23 a7 c0 ff 9c 8a 9f 8e c5 05 99 b8 b6 ab ff 8a 69 a2 8e 9c 05 99 b8 b6 ab ff 8b 69 97 98 00 ; HP recovered. SAVE?\Push A....YES\Push B....NO
8803: a2 b2 b8 38 22 b1 b2 21 b6 45 a8 b3 ff 1d 23 c4 00     ; You cannot sleep here!
8814: 91 99 ff 23 a6 b2 32 23 a7 c0 ff 9c 8a 9f 8e 20 3b 05 b5 a8 a6 b2 b9 25 42 a4 aa ac a6 c5 05 99 9e 9c 91 ff 8a 69 a2 8e 9c ff ff 99 9e 9c 91 ff 8b 69 97 98 00 ; HP recovered. SAVE and\recover magic?\PUSH A....YES  PUSH B....NO
8849: 97 b2 21 3a 26 aa ab ff 4d 49 ff 1d 23 c0 05 9d b5 bc 20 b1 b2 1c 25 24 b3 b2 b7 c0 00 ; Not enough room here.\Try another spot.
8866: a0 ab 2e 5a 40 b6 1b 2e 23 a6 b2 b9 25 ff 91 99 c5 00  ; Who needs to recover HP?
8878: a0 ab 2e 5a 40 b6 1b ab 1a 8a 97 9d 92 8d 98 9d 8e c5 00 ; Who needs the ANTIDOTE?
888b: 9d b8 b5 b1 40 1b 2e 9c 9d 98 97 8e c5 05 9c 98 8f 9d 8e 97 33 3d a6 ab 36 5a c5 00 ; Turned to STONE?\SOFTEN which one?
88a7: ff 10 00 00                                            ; " <W1 name>"
88ab: ff ff ff ff 10 01 00                                   ; "    <W1 class>\\"
88b2: 95 8e 9f ff 10 03 00                                   ; LEV <W1 level>
88b9: ff 8e a1 99 c0 99 98 92 97 9d 9c ff ff ff 10 04 01 ff 8f 98 9b ff 95 8e 9f ff 9e 99 ff ff ff ff 10 42 00 ; " EXP.POINTS   <W1 exp>\\ FOR LEV UP    <W1 exp-to-lev>"
88dc: ff 9c 9d 9b c0 ff ff ff ff 10 07 01 ff 8a 90 95 c0 ff ff ff ff 10 08 01 ff 92 97 9d c0 ff ff ff ff 10 09 01 ff 9f 92 9d c0 ff ff ff ff 10 0a 01 ff 95 9e 8c 94 ff ff ff ff 10 0b 00 ; " STR.    <W1 str>\\ AGL.    <W1 agi>\\ INT.    <W1 int>\\ VIT.    <W1 vit>\\ LUCK    <W1 luck>"
8918: ff 8d 8a 52 90 8e ff ff ff 10 3c 01 ff 91 92 9d ff e0 ff ff ff ff 10 3d 01 ff 8a 8b 9c 98 9b 8b ff ff ff 10 3e 01 ff 8e 9f 8a 8d 8e ff e0 ff ff 10 3f 00 ; " DAMAGE   <W1 dmg>\\ HIT %    <W1 hit%>\\ ABSORB   <W1 absorb>\\ EVADE %  <W1 evade%>"
894b: ff 10 00 00                                            ; " <W1 name>"
894f: ff 95 81 ff 10 2c 7a 10 34 ff ff ff 10 14 ff ff 10 15 ff ff 10 16 01 ff 95 82 ff 10 2d 7a 10 35 ff ff ff 10 17 ff ff 10 18 ff ff 10 19 01 ff 95 83 ff 10 2e 7a 10 36 ff ff ff 10 1a ff ff 10 1b ff ff 10 1c 01 ff 95 84 ff 10 2f 7a 10 37 ff ff ff 10 1d ff ff 10 1e ff ff 10 1f 01 ff 95 85 ff 10 30 7a 10 38 ff ff ff 10 20 ff ff 10 21 ff ff 10 22 01 ff 95 86 ff 10 31 7a 10 39 ff ff ff 10 23 ff ff 10 24 ff ff 10 25 01 ff 95 87 ff 10 32 7a 10 3a ff ff ff 10 26 ff ff 10 27 ff ff 10 28 01 ff 95 88 ff 10 33 7a 10 3b ff ff ff 10 29 ff ff 10 2a ff ff 10 2b 00 ; " L1 <W1 M1c>/<W1 M1x>   <W1 M1-1>  <W1 M1-2>  <W1 M1-3>\\ L2 <W1 M2c>/<W1 M2x>   <W1 M2-1>  <W1 M2-2>  <W1 M2-3>\\ L3 <W1 M3c>/<W1 M3x>   <W1 M3-1>  <W1 M3-2>  <W1 M3-3>\\ L4 <W1 M4c>/<W1 M4x>   <W1 M4-1>  <W1 M4-2>  <W1 M4-3>\\ L5 <W1 M5c>/<W1 M5x>   <W1 M5-1>  <W1 M5-2>  <W1 M5-3>\\ L6 <W1 M6c>/<W1 M6x>   <W1 M6-1>  <W1 M6-2>  <W1 M6-3>\\ L7 <W1 M7c>/<W1 M7x>   <W1 M7-1>  <W1 M7-2>  <W1 M7-3>\\ L8 <W1 M8c>/<W1 M8x>   <W1 M8-1>  <W1 M8-2>  <W1 M8-3>"
8a07: a0 ab 2e 5a 40 b6 1b 2e 23 a6 b2 b9 25 ff 91 99 c5 00  ; Who needs to recover HP?
8a19: 8a ff b0 a4 aa ac a6 1b 2e 23 a6 b2 b9 25 ff 91 99 05 a9 b2 b5 20 4e 36 a9 50 26 c0 05 99 b8 b6 ab ff 8a 69 a2 8e 9c ff ff ff 99 b8 b6 ab ff 8b 69 97 98 00 ; A magic to recover HP\for all of you.\Push A....YES   Push B....NO
8a4d: 9d ab ac 1e b0 a4 aa ac a6 ff 23 b0 b2 b9 2c 1b 1d 05 b3 b2 30 3c c0 00 ; This magic removes the\poison.
8a65: 9d ab ac 1e b6 b3 a8 4e 33 ac 4e ff 23 b9 ac 32 c4 00  ; This spell will revive!
8a77: 8a ff b0 a4 aa ac a6 1b 2e 23 b7 55 29 3c a8 05 a9 af b2 35 c0 ff 97 46 33 2f b3 31 5e ae c4 00 ; A magic to return one\floor. Now warp back!
8a97: 9d b8 b5 b1 40 1b 2e 9c 9d 98 97 8e c5 05 9d ab ac 1e ba ac 4e ff 23 b6 28 23 c4 00 ; Turned to STONE?\This will restore!
8ab3: 95 b2 37 c5 ff 97 2e 5d 4b 26 b7 c5 05 92 b6 2d 21 ab b2 b3 a8 af 2c b6 c5 ff 9e b6 1a 1c 30 05 b6 b3 a8 4e 1b 2e a8 bb 5b c4 00 ; Lost? No way out?\Is it hopeless? Use this\spell to exit!
8ade: 8a af af 36 a9 1b 41 21 45 32 af be b6 05 b6 b3 a8 4e 1e 2f 1a a8 bb 41 b8 37 40 c0 00 ; All of that level's\spells are exhausted.
8afb: 9c b2 b5 b5 bc bf 50 26 38 22 b1 b2 21 b8 3e 05 b7 ab a4 21 b6 b3 a8 4e ff 1d 23 c0 00 ; Sorry, you cannot use\that spell here.
8b18: cf d0 d1 d2 d3 00                                      ; WEAPON
8b1e: ff ff 8e 9a 9e 92 99 ff ff 9d 9b 8a 8d 8e ff ff 8d 9b 98 99 00 ; "  EQUIP  TRADE  DROP"
8b33: ff 10 00 00                                            ; " <W1 name>"
8b37: 00                                                     ; ""
8b38: ff 11 00 00                                            ; " <W2 name>"
8b3c: 00                                                     ; ""
8b3d: ff 12 00 00                                            ; " <W3 name>"
8b41: 00                                                     ; ""
8b42: ff 13 00 00                                            ; " <W4 name>"
8b46: 00                                                     ; ""
8b47: 8a 9b 96 98 9b 00                                      ; ARMOR
8b4d: 97 b2 ba 24 a4 b9 1f aa 69 c4 00                       ; Now saving....!

; Garbage?
8b58: c4 00                                                  ; !
8b5a: 8a ff b0 a4 aa ac a6 ff b7 b2 ff b5 a8 b7 b8 b5 b1 ff b2 b1 a8 05 a9 af b2 b2 b5 c0 ff 97 b2 ba ff ba a4 b5 b3 ff a5 a4 a6 ae c4 00 ; A magic to return one\floor. Now warp back!
8b86: 9d b8 b5 b1 a8 a7 ff b7 b2 ff 9c 9d 98 97 8e c5 05 9d ab ac b6 ff ba ac af af ff b5 a8 b6 b7 b2 b5 a8 c4 00 ; Turned to STONE?\This will restore!
8baa: 95 b2 b6 b7 c5 ff 97 b2 ff ba a4 bc ff b2 b8 b7 c5 05 92 b6 ff ac b7 ff ab b2 b3 a8 af a8 b6 b6 c5 ff 9e b6 a8 ff b7 ab ac b6 05 b6 b3 a8 af af ff b7 b2 ff a8 bb ac b7 c4 00 ; Lost? No way out?\Is it hopeless? Use this\spell to exit!
8be4: 8a af af ff b2 a9 ff b7 ab a4 b7 ff af a8 b9 a8 af be b6 05 b6 b3 a8 af af b6 ff a4 b5 a8 ff a8 bb ab a4 b8 b6 b7 a8 a7 c0 00 ; All of that level's\spells are exhausted.
8c0e: 9c b2 b5 b5 bc bf ff bc b2 b8 ff a6 a4 b1 b1 b2 b7 ff b8 b6 a8 05 b7 ab a4 b7 ff b6 b3 a8 af af ff ab a8 b5 a8 c0 00 ; Sorry, you cannot use\that spell here.
8c35: cf d0 d1 d2 d3 00                                      ; WEAPON
8c3b: ff ff 8e 9a 9e 92 99 ff ff 9d 9b 8a 8d 8e ff ff 8d 9b 98 99 00 ; "  EQUIP  TRADE  DROP"
8c50: ff 10 00 00                                            ; " <W1 name>"
8c54: 00                                                     ; ""
8c55: ff 11 00 00                                            ; " <W2 name>"
8c59: 00                                                     ; ""
8c5a: ff 12 00 00                                            ; " <W3 name>"
8c5e: 00                                                     ; ""
8c5f: ff 13 00 00                                            ; " <W4 name>"
8c63: 00                                                     ; ""
8c64: 8a 9b 96 98 9b 00                                      ; ARMOR
8c6a: 97 b2 ba ff b6 a4 b9 ac b1 aa c3 c3 c4 00              ; Now saving....!
8c78: 00                                                     ; ""
8c79: 00                                                     ; ""
8c7a: 8a 9b 96 98 9b 00                                      ; ARMOR
8c80: 97 b2 ba ff b6 a4 b9 ac b1 aa c3 c3 c4 00              ; Now saving....!
8c8e: a2 b2 b8 ff a6 1a be 66 b8 b6 37 63 1d 05 af a8 b9 33 be 62 b6 b3 33 51 1a bc b0 b2 67 c0 00 ; You ce 'geusstrshe\lev w'besp wcae ymo d.
8cad: a2 b2 b8 ff a6 1a be 66 b8 b6 37 63 37 b6 b3 33 af 05 ab a8 67 c0 00 ; You ce 'geusstrsstsp wl\he d.
8cc4: ff a0 8e 8a 99 98 97 00                                ; " WEAPON"
8ccc: ff ff ff 8e 9a 9e 92 99 ff 9d 9b 8a 8d 8e ff ff 8d 9b 98 99 00 ; "   EQUIP TRADE  DROP"
8ce1: ff 10 00 ff 11 00 ff 12 00 ff 13 00 00                 ; " <W1 name> <W2 name> <W3 name> <W4 name>"
8cee: ff 8a 9b 96 98 9b 00                                   ; " ARMOR"
8cf5: 97 b2 ba ff b6 a4 b9 47 aa 69 c3 c3 c4 00              ; Now savg g........!
8d03: ff ff ff 93 8c 8f b6 ff ff ff 96 9c b2 00              ; "   JCFs   MSo"
8d11: ff 10 00 00                                            ; " <W1 name>"
8d15: ff ff ff 10 10 ff ff ff 10 11 01 ff ff ff 10 12 ff ff ff 10 13 00 ; "   <W1 armor1>   <W1 armor2>\\   <W1 armor3>   <W1 armor4>"
8d2b: ff 11 00 00                                            ; " <W2 name>"
8d2f: ff ff ff 11 10 ff ff ff 11 11 01 ff ff ff 11 12 ff ff ff 11 13 00 ; "   <W2 armor1>   <W2 armor2>\\   <W2 armor3>   <W2 armor4>"
8d45: ff 12 00 00                                            ; " <W3 name>"
8d49: ff ff ff 12 10 ff ff ff 12 11 01 ff ff ff 12 12 ff ff ff 12 13 00 ; "   <W3 armor1>   <W3 armor2>\\   <W3 armor3>   <W3 armor4>"
8d5f: ff 13 00 00                                            ; " <W4 name>"
8d63: ff ff ff 13 10 ff ff ff 13 11 01 ff ff                 ; "   <W4 armor1>   <W4 armor2>\\  " (unterminated)

; p[$3e] = stat for warrior $67 as string
8d70: c9 03        CMP #$03
8d72: d0 03        BNE +$03  [$8d77]
8d74: 4c 37 8e     JMP $8e37          ;; 03 -> level
8d77: c9 04        CMP #$04
8d79: f0 5d        BEQ +$5d  [$8dd8]  ;; 04 -> exp
8d7b: c9 05        CMP #$05
8d7d: f0 5d        BEQ +$5d  [$8ddc]  ;; 05 -> HP
8d7f: c9 06        CMP #$06
8d81: f0 5d        BEQ +$5d  [$8de0]  ;; 06 -> Max HP
8d83: c9 07        CMP #$07
8d85: f0 5d        BEQ +$5d  [$8de4]  ;; 07 -> Str
8d87: c9 08        CMP #$08
8d89: f0 5d        BEQ +$5d  [$8de8]  ;; 08 -> Agi
8d8b: c9 09        CMP #$09
8d8d: f0 5d        BEQ +$5d  [$8dec]  ;; 09 -> Int
8d8f: c9 0a        CMP #$0a
8d91: f0 5d        BEQ +$5d  [$8df0]  ;; 0a -> Vit
8d93: c9 0b        CMP #$0b
8d95: f0 5d        BEQ +$5d  [$8df4]  ;; 0b -> Luck
8d97: c9 3c        CMP #$3c
8d99: b0 13        BCS +$13  [$8dae]
8d9b: c9 2c        CMP #$2c
8d9d: 90 26        BCC +$26  [$8dc5]
8d9f: 38           SEC                ;; 2c-33 -> magic charges for level 1-8
8da0: e9 0c        SBC #$0c           ;; 34-3b -> max charges for level 1-8
8da2: 18           CLC
8da3: 65 67        ADC $67
8da5: aa           TAX
8da6: bd 00 63     LDA $6300,X
8da9: 85 10        STA $10
8dab: 4c 5c 8e     JMP $8e5c   ; p[$3e] = 1-digit number in $10
8dae: c9 42        CMP #$42
8db0: b0 13        BCS +$13  [$8dc5]
8db2: 38           SEC                ;; 3c -> Damage
8db3: e9 3c        SBC #$3c           ;; 3d -> Hit%
8db5: 18           CLC                ;; 3e -> Absorb
8db6: 65 67        ADC $67            ;; 3f -> Evade%
8db8: aa           TAX                ;; 40 -> Elemental Resistances as a number
8db9: bd 20 61     LDA $6120,X        ;; 41 -> MagDef
8dbc: 85 10        STA $10
8dbe: a9 00        LDA #$00
8dc0: 85 11        STA $11
8dc2: 4c 70 8e     JMP $8e70   ; p[$3e] = 3-digit number in $10-11
8dc5: a6 67        LDX $67            ;; any other -> Exp for level up
8dc7: bd 16 61     LDA $6116,X
8dca: 85 10        STA $10
8dcc: bd 17 61     LDA $6117,X
8dcf: 85 11        STA $11
8dd1: a9 00        LDA #$00
8dd3: 85 12        STA $12
8dd5: 4c 84 8e     JMP $8e84   ; p[$3e] = 5-digit number in $10-12
8dd8: a9 07        LDA #$07
8dda: d0 45        BNE +$45  [$8e21]
8ddc: a9 0a        LDA #$0a
8dde: d0 30        BNE +$30  [$8e10]
8de0: a9 0c        LDA #$0c
8de2: d0 2c        BNE +$2c  [$8e10]
8de4: a9 10        LDA #$10
8de6: d0 1c        BNE +$1c  [$8e04]
8de8: a9 11        LDA #$11
8dea: d0 18        BNE +$18  [$8e04]
8dec: a9 12        LDA #$12
8dee: d0 14        BNE +$14  [$8e04]
8df0: a9 13        LDA #$13
8df2: d0 10        BNE +$10  [$8e04]
8df4: a9 14        LDA #$14
8df6: d0 0c        BNE +$0c  [$8e04]
8df8: 18           CLC
8df9: 65 67        ADC $67
8dfb: aa           TAX
8dfc: bd 00 61     LDA $6100,X
8dff: 85 10        STA $10
8e01: 4c 5c 8e     JMP $8e5c   ; p[$3e] = 1-digit number in $10
8e04: 18           CLC
8e05: 65 67        ADC $67
8e07: aa           TAX
8e08: bd 00 61     LDA $6100,X
8e0b: 85 10        STA $10
8e0d: 4c 66 8e     JMP $8e66   ; p[$3e] = 2-digit number in $10
8e10: 18           CLC
8e11: 65 67        ADC $67
8e13: aa           TAX
8e14: bd 00 61     LDA $6100,X
8e17: 85 10        STA $10
8e19: bd 01 61     LDA $6101,X
8e1c: 85 11        STA $11
8e1e: 4c 70 8e     JMP $8e70   ; p[$3e] = 3-digit number in $10-11
8e21: 18           CLC
8e22: 65 67        ADC $67
8e24: aa           TAX
8e25: bd 00 61     LDA $6100,X
8e28: 85 10        STA $10
8e2a: bd 01 61     LDA $6101,X
8e2d: 85 11        STA $11
8e2f: bd 02 61     LDA $6102,X
8e32: 85 12        STA $12
8e34: 4c 8e 8e     JMP $8e8e   ; p[$3e] = 6-digit number in $10-12
8e37: a6 67        LDX $67
8e39: bd 26 61     LDA $6126,X
8e3c: 18           CLC
8e3d: 69 01        ADC #$01
8e3f: 85 10        STA $10
8e41: 4c 66 8e     JMP $8e66   ; p[$3e] = 2-digit number in $10

; p[$3e] = 5-digit price of item in A
8e44: 20 b9 ec     JSR $ecb9   ; $10-12 = price of item in A        
8e47: 4c 84 8e     JMP $8e84   ; p[$3e] = 5-digit number in $10-12

; p[$3e] = 6-digit party gold
8e4a: ad 1c 60     LDA $601c
8e4d: 85 10        STA $10
8e4f: ad 1d 60     LDA $601d
8e52: 85 11        STA $11
8e54: ad 1e 60     LDA $601e
8e57: 85 12        STA $12
8e59: 4c 8e 8e     JMP $8e8e   ; p[$3e] = 6-digit number in $10-12

; p[$3e] = 1-digit number in $10
8e5c: a5 10        LDA $10
8e5e: 09 80        ORA #$80
8e60: 85 5f        STA $5f
8e62: a9 5f        LDA #$5f
8e64: d0 32        BNE +$32  [$8e98]
; p[$3e] = 2-digit number in $10
8e66: 20 ba 8f     JSR $8fba   ; 2-digit number in $10 -> $5e-5f
8e69: 20 c7 8e     JSR $8ec7   ; Trim leading zeros from the number in $5e-5f
8e6c: a9 5e        LDA #$5e
8e6e: d0 28        BNE +$28  [$8e98]
; p[$3e] = 3-digit number in $10-11
8e70: 20 89 8f     JSR $8f89   ; 3-digit number in $10-11 -> $5d-5f
8e73: 20 bd 8e     JSR $8ebd   ; Trim leading zeros from the number in $5d-5f
8e76: a9 5d        LDA #$5d
8e78: d0 1e        BNE +$1e  [$8e98]
; p[$3e] = 4-digit number in $10-11
8e7a: 20 58 8f     JSR $8f58   ; 4-digit number in $10-11 -> $5c-5f
8e7d: 20 b3 8e     JSR $8eb3   ; Trim leading zeros from the number in $5c-5f
8e80: a9 5c        LDA #$5c
8e82: d0 14        BNE +$14  [$8e98]
; p[$3e] = 5-digit number in $10-12
8e84: 20 15 8f     JSR $8f15   ; 5-digit number in $10-12 -> $5b-5f
8e87: 20 a9 8e     JSR $8ea9   ; Trim leading zeros from the number in $5b-5f
8e8a: a9 5b        LDA #$5b
8e8c: d0 0a        BNE +$0a  [$8e98]
; p[$3e] = 6-digit number in $10-12
8e8e: 20 d2 8e     JSR $8ed2   ; 6-digit number in $10-12 -> $5a-5f
8e91: 20 9f 8e     JSR $8e9f   ; Trim leading zeros from the number in $5a-5f
8e94: a9 5a        LDA #$5a
8e96: d0 00        BNE +$00  [$8e98]
8e98: 85 3e        STA $3e
8e9a: a9 00        LDA #$00
8e9c: 85 3f        STA $3f
8e9e: 60           RTS

; Trim leading zeros from the number in $5a-5f
8e9f: a5 5a        LDA $5a
8ea1: c9 80        CMP #$80
8ea3: d0 2c        BNE +$2c  [$8ed1]
8ea5: a9 ff        LDA #$ff
8ea7: 85 5a        STA $5a
; Trim leading zeros from the number in $5b-5f
8ea9: a5 5b        LDA $5b
8eab: c9 80        CMP #$80
8ead: d0 22        BNE +$22  [$8ed1]
8eaf: a9 ff        LDA #$ff
8eb1: 85 5b        STA $5b
; Trim leading zeros from the number in $5c-5f
8eb3: a5 5c        LDA $5c
8eb5: c9 80        CMP #$80
8eb7: d0 18        BNE +$18  [$8ed1]
8eb9: a9 ff        LDA #$ff
8ebb: 85 5c        STA $5c
; Trim leading zeros from the number in $5d-5f
8ebd: a5 5d        LDA $5d
8ebf: c9 80        CMP #$80
8ec1: d0 0e        BNE +$0e  [$8ed1]
8ec3: a9 ff        LDA #$ff
8ec5: 85 5d        STA $5d
; Trim leading zeros from the number in $5e-5f
8ec7: a5 5e        LDA $5e
8ec9: c9 80        CMP #$80
8ecb: d0 04        BNE +$04  [$8ed1]
8ecd: a9 ff        LDA #$ff
8ecf: 85 5e        STA $5e
8ed1: 60           RTS

; 6-digit number in $10-12 -> $5a-5f
8ed2: a2 08        LDX #$08
8ed4: a5 12        LDA $12
8ed6: dd d1 8f     CMP $8fd1,X
8ed9: f0 0c        BEQ +$0c  [$8ee7]
8edb: b0 1c        BCS +$1c  [$8ef9]
8edd: ca           DEX
8ede: 10 f4        BPL +$f4  [$8ed4]
8ee0: a2 80        LDX #$80
8ee2: 86 5a        STX $5a
8ee4: 4c 15 8f     JMP $8f15
8ee7: a5 11        LDA $11
8ee9: dd da 8f     CMP $8fda,X
8eec: f0 04        BEQ +$04  [$8ef2]
8eee: 90 ed        BCC +$ed  [$8edd]
8ef0: b0 07        BCS +$07  [$8ef9]
8ef2: a5 10        LDA $10
8ef4: dd e3 8f     CMP $8fe3,X
8ef7: 90 e4        BCC +$e4  [$8edd]
8ef9: a5 10        LDA $10
8efb: 38           SEC
8efc: fd e3 8f     SBC $8fe3,X
8eff: 85 10        STA $10
8f01: a5 11        LDA $11
8f03: fd da 8f     SBC $8fda,X
8f06: 85 11        STA $11
8f08: a5 12        LDA $12
8f0a: fd d1 8f     SBC $8fd1,X
8f0d: 85 12        STA $12
8f0f: 8a           TXA
8f10: 18           CLC
8f11: 69 81        ADC #$81
8f13: 85 5a        STA $5a
; 5-digit number in $10-12 -> $5b-5f
8f15: a2 08        LDX #$08
8f17: a5 12        LDA $12
8f19: dd ec 8f     CMP $8fec,X
8f1c: f0 0c        BEQ +$0c  [$8f2a]
8f1e: b0 1c        BCS +$1c  [$8f3c]
8f20: ca           DEX
8f21: 10 f4        BPL +$f4  [$8f17]
8f23: a2 80        LDX #$80
8f25: 86 5b        STX $5b
8f27: 4c 58 8f     JMP $8f58
8f2a: a5 11        LDA $11
8f2c: dd f5 8f     CMP $8ff5,X
8f2f: f0 04        BEQ +$04  [$8f35]
8f31: 90 ed        BCC +$ed  [$8f20]
8f33: b0 07        BCS +$07  [$8f3c]
8f35: a5 10        LDA $10
8f37: dd fe 8f     CMP $8ffe,X
8f3a: 90 e4        BCC +$e4  [$8f20]
8f3c: a5 10        LDA $10
8f3e: 38           SEC
8f3f: fd fe 8f     SBC $8ffe,X
8f42: 85 10        STA $10
8f44: a5 11        LDA $11
8f46: fd f5 8f     SBC $8ff5,X
8f49: 85 11        STA $11
8f4b: a5 12        LDA $12
8f4d: fd ec 8f     SBC $8fec,X
8f50: 85 12        STA $12
8f52: 8a           TXA
8f53: 18           CLC
8f54: 69 81        ADC #$81
8f56: 85 5b        STA $5b
; 4-digit number in $10-11 -> $5c-5f
8f58: a2 08        LDX #$08
8f5a: a5 11        LDA $11
8f5c: dd 07 90     CMP $9007,X
8f5f: f0 0c        BEQ +$0c  [$8f6d]
8f61: b0 11        BCS +$11  [$8f74]
8f63: ca           DEX
8f64: 10 f4        BPL +$f4  [$8f5a]
8f66: a2 80        LDX #$80
8f68: 86 5c        STX $5c
8f6a: 4c 89 8f     JMP $8f89
8f6d: a5 10        LDA $10
8f6f: dd 10 90     CMP $9010,X
8f72: 90 ef        BCC +$ef  [$8f63]
8f74: a5 10        LDA $10
8f76: 38           SEC
8f77: fd 10 90     SBC $9010,X
8f7a: 85 10        STA $10
8f7c: a5 11        LDA $11
8f7e: fd 07 90     SBC $9007,X
8f81: 85 11        STA $11
8f83: 8a           TXA
8f84: 18           CLC
8f85: 69 81        ADC #$81
8f87: 85 5c        STA $5c
; 3-digit number in $10-11 -> $5d-5f
8f89: a2 08        LDX #$08
8f8b: a5 11        LDA $11
8f8d: dd 19 90     CMP $9019,X
8f90: f0 0c        BEQ +$0c  [$8f9e]
8f92: b0 11        BCS +$11  [$8fa5]
8f94: ca           DEX
8f95: 10 f4        BPL +$f4  [$8f8b]
8f97: a2 80        LDX #$80
8f99: 86 5d        STX $5d
8f9b: 4c ba 8f     JMP $8fba
8f9e: a5 10        LDA $10
8fa0: dd 22 90     CMP $9022,X
8fa3: 90 ef        BCC +$ef  [$8f94]
8fa5: a5 10        LDA $10
8fa7: 38           SEC
8fa8: fd 22 90     SBC $9022,X
8fab: 85 10        STA $10
8fad: a5 11        LDA $11
8faf: fd 19 90     SBC $9019,X
8fb2: 85 11        STA $11
8fb4: 8a           TXA
8fb5: 18           CLC
8fb6: 69 81        ADC #$81
8fb8: 85 5d        STA $5d
; 2-digit number in $10 -> $5e-5f
8fba: a2 00        LDX #$00
8fbc: a5 10        LDA $10
8fbe: c9 0a        CMP #$0a
8fc0: 90 05        BCC +$05  [$8fc7]
8fc2: e9 0a        SBC #$0a
8fc4: e8           INX
8fc5: d0 f7        BNE +$f7  [$8fbe]
8fc7: 09 80        ORA #$80
8fc9: 85 5f        STA $5f
8fcb: 8a           TXA
8fcc: 09 80        ORA #$80
8fce: 85 5e        STA $5e
8fd0: 60           RTS

8fd1: 01 03 04 06 07 09 0a 0c 0d  ; comparisons for X00000
8fda: 86 0d 93 1a a1 27 ae 35 bb
8fe3: a0 40 e0 80 20 c0 60 00 a0
8fec: 00 00 00 00 00 00 01 01 01  ; comparisons for X0000
8ff5: 27 4e 75 9c c3 ea 11 38 5f
8ffe: 10 20 30 40 50 60 70 80 90
9007: 03 07 0b 0f 13 17 1b 1f 23  ; comparisons for X000
9010: e8 d0 b8 a0 88 70 58 40 28
9019: 00 00 01 01 01 02 02 03 03  ; comparisons for X00
9022: 64 c8 2c 90 f4 58 bc 20 84

; Talk to sprite X
902b: bd 00 6f     LDA $6f00,X
902e: 85 16        STA $16
9030: a0 00        LDY #$00
9032: 84 15        STY $15       ; p[$14] = dialog data
9034: 0a           ASL
9035: 26 15        ROL $15
9037: 0a           ASL
9038: 26 15        ROL $15
903a: 69 d5        ADC #$d5
903c: 85 14        STA $14
903e: a9 95        LDA #$95
9040: 65 15        ADC $15
9042: 85 15        STA $15
9044: a0 00        LDY #$00     ; $10-13 = dialog data
9046: b1 14        LDA ($14),Y
9048: 85 10        STA $10
904a: c8           INY
904b: b1 14        LDA ($14),Y
904d: 85 11        STA $11
904f: c8           INY
9050: b1 14        LDA ($14),Y
9052: 85 12        STA $12
9054: c8           INY
9055: b1 14        LDA ($14),Y
9057: 85 13        STA $13
9059: a5 16        LDA $16
905b: 0a           ASL          ; call dialog handler
905c: a8           TAY
905d: 90 0d        BCC +$0d  [$906c]
905f: b9 d3 91     LDA $91d3,Y
9062: 85 16        STA $16
9064: b9 d4 91     LDA $91d4,Y
9067: 85 17        STA $17
9069: 6c 16 00     JMP ($0016)
906c: b9 d3 90     LDA $90d3,Y
906f: 85 16        STA $16
9071: b9 d4 90     LDA $90d4,Y
9074: 85 17        STA $17
9076: 6c 16 00     JMP ($0016)

; Set C if event Y set
9079: b9 00 62     LDA $6200,Y
907c: 4a           LSR
907d: 4a           LSR
907e: 60           RTS

; Set event Y
907f: b9 00 62     LDA $6200,Y
9082: 09 02        ORA #$02
9084: 99 00 62     STA $6200,Y
9087: 60           RTS

; Clear event Y
9088: b9 00 62     LDA $6200,Y
908b: 29 fd        AND #$fd
908d: 99 00 62     STA $6200,Y
9090: 60           RTS

; Set C if sprite Y visible
9091: b9 00 62     LDA $6200,Y
9094: 4a           LSR
9095: 60           RTS

; Vanish sprite Y (also sprite X in current map)
9096: b9 00 62     LDA $6200,Y
9099: 29 fe        AND #$fe
909b: 99 00 62     STA $6200,Y
909e: a9 00        LDA #$00
90a0: 9d 00 6f     STA $6f00,X
90a3: 60           RTS

; Show sprite Y (erase $10)
90a4: 84 10        STY $10
90a6: b9 00 62     LDA $6200,Y
90a9: 09 01        ORA #$01
90ab: 99 00 62     STA $6200,Y
90ae: a0 00        LDY #$00
90b0: a5 10        LDA $10
90b2: d9 0a 6f     CMP $6f0a,Y
90b5: f0 0a        BEQ +$0a  [$90c1]
90b7: 98           TYA
90b8: 18           CLC
90b9: 69 10        ADC #$10
90bb: a8           TAY
90bc: c9 f0        CMP #$f0
90be: 90 f0        BCC +$f0  [$90b0]
90c0: 60           RTS
90c1: 99 00 6f     STA $6f00,Y
90c4: 60           RTS

; Set battle A
90c5: 85 6a        STA $6a
90c7: a9 20        LDA #$20
90c9: 85 44        STA $44
90cb: 60           RTS

; Teleport to teleport position A
90cc: 85 45        STA $45
90ce: a9 80        LDA #$80
90d0: 85 44        STA $44
90d2: 60           RTS

; Sprite dialog handlers
90d3: 96 92        .DW $9296 ; Sprite #00
90d5: 97 92        .DW $9297 ; Sprite #01
90d7: b1 92        .DW $92b1 ; Sprite #02
90d9: be 92        .DW $92be ; Sprite #03
90db: d0 92        .DW $92d0 ; Sprite #04
90dd: 01 93        .DW $9301 ; Sprite #05
90df: 1e 93        .DW $931e ; Sprite #06
90e1: 38 93        .DW $9338 ; Sprite #07
90e3: 52 93        .DW $9352 ; Sprite #08
90e5: 6c 93        .DW $936c ; Sprite #09
90e7: 98 93        .DW $9398 ; Sprite #0a
90e9: ba 93        .DW $93ba ; Sprite #0b
90eb: d7 93        .DW $93d7 ; Sprite #0c
90ed: e4 93        .DW $93e4 ; Sprite #0d
90ef: fb 93        .DW $93fb ; Sprite #0e
90f1: 1b 94        .DW $941b ; Sprite #0f
90f3: 28 94        .DW $9428 ; Sprite #10
90f5: 38 94        .DW $9438 ; Sprite #11
90f7: 48 94        .DW $9448 ; Sprite #12
90f9: 58 94        .DW $9458 ; Sprite #13
90fb: 68 94        .DW $9468 ; Sprite #14
90fd: 7d 94        .DW $947d ; Sprite #15
90ff: 92 94        .DW $9492 ; Sprite #16
9101: 92 94        .DW $9492 ; Sprite #17
9103: 95 94        .DW $9495 ; Sprite #18
9105: 95 94        .DW $9495 ; Sprite #19
9107: aa 94        .DW $94aa ; Sprite #1a
9109: aa 94        .DW $94aa ; Sprite #1b
910b: aa 94        .DW $94aa ; Sprite #1c
910d: aa 94        .DW $94aa ; Sprite #1d
910f: aa 94        .DW $94aa ; Sprite #1e
9111: b7 94        .DW $94b7 ; Sprite #1f
9113: 1b 94        .DW $941b ; Sprite #20
9115: 1b 94        .DW $941b ; Sprite #21
9117: 1b 94        .DW $941b ; Sprite #22
9119: b8 94        .DW $94b8 ; Sprite #23
911b: 1b 94        .DW $941b ; Sprite #24
911d: 1b 94        .DW $941b ; Sprite #25
911f: c5 94        .DW $94c5 ; Sprite #26
9121: d7 94        .DW $94d7 ; Sprite #27
9123: 1b 94        .DW $941b ; Sprite #28
9125: 1b 94        .DW $941b ; Sprite #29
9127: 1b 94        .DW $941b ; Sprite #2a
9129: 1b 94        .DW $941b ; Sprite #2b
912b: b8 94        .DW $94b8 ; Sprite #2c
912d: 1b 94        .DW $941b ; Sprite #2d
912f: b8 94        .DW $94b8 ; Sprite #2e
9131: e2 94        .DW $94e2 ; Sprite #2f
9133: 1b 94        .DW $941b ; Sprite #30
9135: 1b 94        .DW $941b ; Sprite #31
9137: f0 94        .DW $94f0 ; Sprite #32
9139: 1b 94        .DW $941b ; Sprite #33
913b: 1f 95        .DW $951f ; Sprite #34
913d: 92 94        .DW $9492 ; Sprite #35
913f: 92 94        .DW $9492 ; Sprite #36
9141: 1b 94        .DW $941b ; Sprite #37
9143: 1b 94        .DW $941b ; Sprite #38
9145: 92 94        .DW $9492 ; Sprite #39
9147: 1f 95        .DW $951f ; Sprite #3a
9149: 1f 95        .DW $951f ; Sprite #3b
914b: 1f 95        .DW $951f ; Sprite #3c
914d: 1f 95        .DW $951f ; Sprite #3d
914f: 1f 95        .DW $951f ; Sprite #3e
9151: 92 94        .DW $9492 ; Sprite #3f
9153: 92 94        .DW $9492 ; Sprite #40
9155: 92 94        .DW $9492 ; Sprite #41
9157: e2 94        .DW $94e2 ; Sprite #42
9159: e2 94        .DW $94e2 ; Sprite #43
915b: e2 94        .DW $94e2 ; Sprite #44
915d: 92 94        .DW $9492 ; Sprite #45
915f: e2 94        .DW $94e2 ; Sprite #46
9161: b8 94        .DW $94b8 ; Sprite #47
9163: 92 94        .DW $9492 ; Sprite #48
9165: e2 94        .DW $94e2 ; Sprite #49
9167: e2 94        .DW $94e2 ; Sprite #4a
9169: b8 94        .DW $94b8 ; Sprite #4b
916b: e2 94        .DW $94e2 ; Sprite #4c
916d: e2 94        .DW $94e2 ; Sprite #4d
916f: e2 94        .DW $94e2 ; Sprite #4e
9171: e2 94        .DW $94e2 ; Sprite #4f
9173: e2 94        .DW $94e2 ; Sprite #50
9175: e2 94        .DW $94e2 ; Sprite #51
9177: 92 94        .DW $9492 ; Sprite #52
9179: 33 95        .DW $9533 ; Sprite #53
917b: b8 94        .DW $94b8 ; Sprite #54
917d: e2 94        .DW $94e2 ; Sprite #55
917f: e2 94        .DW $94e2 ; Sprite #56
9181: 92 94        .DW $9492 ; Sprite #57
9183: 92 94        .DW $9492 ; Sprite #58
9185: 3e 95        .DW $953e ; Sprite #59
9187: 92 94        .DW $9492 ; Sprite #5a
9189: 92 94        .DW $9492 ; Sprite #5b
918b: b8 94        .DW $94b8 ; Sprite #5c
918d: b8 94        .DW $94b8 ; Sprite #5d
918f: 92 94        .DW $9492 ; Sprite #5e
9191: 3e 95        .DW $953e ; Sprite #5f
9193: 49 95        .DW $9549 ; Sprite #60
9195: 92 94        .DW $9492 ; Sprite #61
9197: 3e 95        .DW $953e ; Sprite #62
9199: 92 94        .DW $9492 ; Sprite #63
919b: 92 94        .DW $9492 ; Sprite #64
919d: 92 94        .DW $9492 ; Sprite #65
919f: 92 94        .DW $9492 ; Sprite #66
91a1: 92 94        .DW $9492 ; Sprite #67
91a3: 1b 94        .DW $941b ; Sprite #68
91a5: 92 94        .DW $9492 ; Sprite #69
91a7: 59 95        .DW $9559 ; Sprite #6a
91a9: b8 94        .DW $94b8 ; Sprite #6b
91ab: 1b 94        .DW $941b ; Sprite #6c
91ad: 59 95        .DW $9559 ; Sprite #6d
91af: 92 94        .DW $9492 ; Sprite #6e
91b1: 92 94        .DW $9492 ; Sprite #6f
91b3: b8 94        .DW $94b8 ; Sprite #70
91b5: 6b 95        .DW $956b ; Sprite #71
91b7: 92 94        .DW $9492 ; Sprite #72
91b9: e2 94        .DW $94e2 ; Sprite #73
91bb: b8 94        .DW $94b8 ; Sprite #74
91bd: 92 94        .DW $9492 ; Sprite #75
91bf: 92 94        .DW $9492 ; Sprite #76
91c1: 92 94        .DW $9492 ; Sprite #77
91c3: 1f 95        .DW $951f ; Sprite #78
91c5: 1f 95        .DW $951f ; Sprite #79
91c7: 1f 95        .DW $951f ; Sprite #7a
91c9: 1f 95        .DW $951f ; Sprite #7b
91cb: 1f 95        .DW $951f ; Sprite #7c
91cd: 1f 95        .DW $951f ; Sprite #7d
91cf: 1f 95        .DW $951f ; Sprite #7e
91d1: b8 94        .DW $94b8 ; Sprite #7f
91d3: 76 95        .DW $9576 ; Sprite #80
91d5: b8 94        .DW $94b8 ; Sprite #81
91d7: 92 94        .DW $9492 ; Sprite #82
91d9: 92 94        .DW $9492 ; Sprite #83
91db: a2 94        .DW $94a2 ; Sprite #84
91dd: 92 94        .DW $9492 ; Sprite #85
91df: 92 94        .DW $9492 ; Sprite #86
91e1: 92 94        .DW $9492 ; Sprite #87
91e3: 92 94        .DW $9492 ; Sprite #88
91e5: 92 94        .DW $9492 ; Sprite #89
91e7: 92 94        .DW $9492 ; Sprite #8a
91e9: 92 94        .DW $9492 ; Sprite #8b
91eb: 92 94        .DW $9492 ; Sprite #8c
91ed: 92 94        .DW $9492 ; Sprite #8d
91ef: 92 94        .DW $9492 ; Sprite #8e
91f1: 92 94        .DW $9492 ; Sprite #8f
91f3: 92 94        .DW $9492 ; Sprite #90
91f5: 92 94        .DW $9492 ; Sprite #91
91f7: 92 94        .DW $9492 ; Sprite #92
91f9: 92 94        .DW $9492 ; Sprite #93
91fb: b8 94        .DW $94b8 ; Sprite #94
91fd: 92 94        .DW $9492 ; Sprite #95
91ff: 92 94        .DW $9492 ; Sprite #96
9201: 92 94        .DW $9492 ; Sprite #97
9203: 92 94        .DW $9492 ; Sprite #98
9205: 92 94        .DW $9492 ; Sprite #99
9207: b8 94        .DW $94b8 ; Sprite #9a
9209: e2 94        .DW $94e2 ; Sprite #9b
920b: 92 94        .DW $9492 ; Sprite #9c
920d: 92 94        .DW $9492 ; Sprite #9d
920f: 92 94        .DW $9492 ; Sprite #9e
9211: 92 94        .DW $9492 ; Sprite #9f
9213: 92 94        .DW $9492 ; Sprite #a0
9215: 92 94        .DW $9492 ; Sprite #a1
9217: 86 95        .DW $9586 ; Sprite #a2
9219: 92 94        .DW $9492 ; Sprite #a3
921b: 92 94        .DW $9492 ; Sprite #a4
921d: 92 94        .DW $9492 ; Sprite #a5
921f: 92 94        .DW $9492 ; Sprite #a6
9221: 92 94        .DW $9492 ; Sprite #a7
9223: 92 94        .DW $9492 ; Sprite #a8
9225: b8 94        .DW $94b8 ; Sprite #a9
9227: 92 94        .DW $9492 ; Sprite #aa
9229: 92 94        .DW $9492 ; Sprite #ab
922b: 92 94        .DW $9492 ; Sprite #ac
922d: 92 94        .DW $9492 ; Sprite #ad
922f: 92 94        .DW $9492 ; Sprite #ae
9231: e2 94        .DW $94e2 ; Sprite #af
9233: 92 94        .DW $9492 ; Sprite #b0
9235: 92 94        .DW $9492 ; Sprite #b1
9237: 92 94        .DW $9492 ; Sprite #b2
9239: 92 94        .DW $9492 ; Sprite #b3
923b: 92 94        .DW $9492 ; Sprite #b4
923d: 92 94        .DW $9492 ; Sprite #b5
923f: 92 94        .DW $9492 ; Sprite #b6
9241: 92 94        .DW $9492 ; Sprite #b7
9243: 92 94        .DW $9492 ; Sprite #b8
9245: 92 94        .DW $9492 ; Sprite #b9
9247: 92 94        .DW $9492 ; Sprite #ba
9249: 94 95        .DW $9594 ; Sprite #bb
924b: e2 94        .DW $94e2 ; Sprite #bc
924d: e2 94        .DW $94e2 ; Sprite #bd
924f: e2 94        .DW $94e2 ; Sprite #be
9251: e2 94        .DW $94e2 ; Sprite #bf
9253: e2 94        .DW $94e2 ; Sprite #c0
9255: e2 94        .DW $94e2 ; Sprite #c1
9257: e2 94        .DW $94e2 ; Sprite #c2
9259: e2 94        .DW $94e2 ; Sprite #c3
925b: e2 94        .DW $94e2 ; Sprite #c4
925d: e2 94        .DW $94e2 ; Sprite #c5
925f: e2 94        .DW $94e2 ; Sprite #c6
9261: e2 94        .DW $94e2 ; Sprite #c7
9263: e2 94        .DW $94e2 ; Sprite #c8
9265: e2 94        .DW $94e2 ; Sprite #c9
9267: 02 95        .DW $9502 ; Sprite #ca
9269: 92 94        .DW $9492 ; Sprite #cb
926b: 92 94        .DW $9492 ; Sprite #cc
926d: 92 94        .DW $9492 ; Sprite #cd
926f: 92 94        .DW $9492 ; Sprite #ce
9271: 92 94        .DW $9492 ; Sprite #cf

; Hide sprite Y, ID number in A
9273: 85 10        STA $10

; Hide sprite Y, ID number in $10
9275: b9 00 62     LDA $6200,Y
9278: 29 fe        AND #$fe
927a: 99 00 62     STA $6200,Y
927d: a0 00        LDY #$00
927f: a5 10        LDA $10
9281: d9 00 6f     CMP $6f00,Y
9284: f0 0a        BEQ +$0a  [$9290]
9286: 98           TYA
9287: 18           CLC
9288: 69 10        ADC #$10
928a: a8           TAY
928b: c9 f0        CMP #$f0
928d: 90 f0        BCC +$f0  [$927f]
928f: 60           RTS
9290: a9 00        LDA #$00
9292: 99 00 6f     STA $6f00,Y
9295: 60           RTS

;; Dialog routines!
;;  Data in $10-13
;;  Return dialog string id in A
;;  Set $6a to trigger a battle

; Do nothing?
9296: 60           RTS

; Plot (King): if(!sp[0x12]){ d[$11] } else if(!bridge){ d[$13] } else { bridge=1; d[$12] }
9297: a0 12        LDY #$12
9299: 20 91 90     JSR $9091   ; Set C if sprite Y visible
929c: b0 03        BCS +$03  [$92a1]
929e: a5 11        LDA $11
92a0: 60           RTS
92a1: ad 08 60     LDA $6008
92a4: f0 03        BEQ +$03  [$92a9]
92a6: a5 13        LDA $13
92a8: 60           RTS
92a9: a5 12        LDA $12
92ab: ee 08 60     INC $6008
92ae: e6 7d        INC $7d
92b0: 60           RTS

; Plot (Garland): vanish sprite, battle 0x7f, d[$11]
92b1: a0 02        LDY #$02
92b3: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
92b6: a9 7f        LDA #$7f
92b8: 20 c5 90     JSR $90c5   ; Set battle A
92bb: a5 11        LDA $11
92bd: 60           RTS

; Plot (Rescue princess): Vanish sprite 0x03, show sprite 0x12, teleport to 0x3f, d[$11]
92be: a0 03        LDY #$03
92c0: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
92c3: a0 12        LDY #$12
92c5: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
92c8: a9 3f        LDA #$3f
92ca: 20 cc 90     JSR $90cc   ; Teleport to teleport position A
92cd: a5 11        LDA $11
92cf: 60           RTS

; Plot (Bikke): if(!ev[0x04]){ set ev[0x04]; bat=0x7e; d[$11] } else if(!ship){ show sprites 0x3f, 0x40, 0x41; give ship; d[$12] } else { d[$13] }
92d0: a0 04        LDY #$04
92d2: 20 79 90     JSR $9079   ; Set C if event Y set
92d5: b0 0b        BCS +$0b  [$92e2]
92d7: 20 7f 90     JSR $907f   ; Set event Y 
92da: a9 7e        LDA #$7e
92dc: 20 c5 90     JSR $90c5   ; Set battle A
92df: a5 11        LDA $11
92e1: 60           RTS
92e2: ad 00 60     LDA $6000
92e5: d0 17        BNE +$17  [$92fe]
92e7: ee 00 60     INC $6000
92ea: a0 3f        LDY #$3f
92ec: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
92ef: a0 40        LDY #$40
92f1: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
92f4: a0 41        LDY #$41
92f6: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
92f9: a5 12        LDA $12
92fb: e6 7d        INC $7d
92fd: 60           RTS
92fe: a5 13        LDA $13
9300: 60           RTS

; Plot (wake prince): if(ev[0x06]){ d[$13] } else if(!HERB){ d[$11] } else { take HERB; set ev[0x06]; d[$12] }
9301: a0 06        LDY #$06
9303: 20 79 90     JSR $9079   ; Set C if event Y set
9306: 90 03        BCC +$03  [$930b]
9308: a5 13        LDA $13
930a: 60           RTS
930b: ad 24 60     LDA $6024
930e: d0 03        BNE +$03  [$9313]
9310: a5 11        LDA $11
9312: 60           RTS
9313: ce 24 60     DEC $6024
9316: 20 7f 90     JSR $907f   ; Set event Y 
9319: e6 7d        INC $7d
931b: a5 12        LDA $12
931d: 60           RTS

; Plot (prince): if(!ev[0x06]){ d[$13] } else if(KEY){ d[$12] } else { give KEY; d[$11] }
931e: a0 06        LDY #$06
9320: 20 79 90     JSR $9079   ; Set C if event Y set
9323: b0 03        BCS +$03  [$9328]
9325: a5 13        LDA $13
9327: 60           RTS
9328: ad 25 60     LDA $6025
932b: f0 03        BEQ +$03  [$9330]
932d: a5 12        LDA $12
932f: 60           RTS
9330: ee 25 60     INC $6025
9333: e6 7d        INC $7d
9335: a5 11        LDA $11
9337: 60           RTS

; Plot (Astos): if(!CROWN){ d[$11] } else { give CRYSTAL; vanish sprite 7; bat=0x7d; d[$12] }
9338: ad 22 60     LDA $6022
933b: d0 03        BNE +$03  [$9340]
933d: a5 11        LDA $11
933f: 60           RTS
9340: ee 23 60     INC $6023
9343: a0 07        LDY #$07
9345: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
9348: a9 7d        LDA #$7d
934a: 20 c5 90     JSR $90c5   ; Set battle A
934d: e6 7d        INC $7d
934f: a5 12        LDA $12
9351: 60           RTS

; Plot (Nerrik): if(!TNT){ d[$11] } else { take TNT; clear canal plug; vanish sprite 0x08; d[$12]; }
9352: ad 26 60     LDA $6026
9355: d0 03        BNE +$03  [$935a]
9357: a5 11        LDA $11
9359: 60           RTS
935a: ce 26 60     DEC $6026
935d: a9 00        LDA #$00
935f: 8d 0c 60     STA $600c
9362: a0 08        LDY #$08
9364: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
9367: e6 7d        INC $7d
9369: a5 12        LDA $12
936b: 60           RTS

; Plot (blacksmith): if(ev[9]){ d[$13] } else if(!ADAMANT){ d[$11] } else if(no free weapon slot){ d[0x3a] } else { give weapon 0x27 (item 0x42); set ev[0x09]; take ADAMANT; d[$12] }
936c: a0 09        LDY #$09
936e: 20 79 90     JSR $9079   ; Set C if event Y set
9371: 90 03        BCC +$03  [$9376]
9373: a5 13        LDA $13
9375: 60           RTS
9376: ad 27 60     LDA $6027
9379: d0 03        BNE +$03  [$937e]
937b: a5 11        LDA $11
937d: 60           RTS
937e: 20 34 dd     JSR $dd34   ; X = first open weapon slot, C set if none
9381: b0 12        BCS +$12  [$9395]
9383: a9 27        LDA #$27
9385: 9d 00 61     STA $6100,X
9388: a0 09        LDY #$09
938a: 20 7f 90     JSR $907f   ; Set event Y 
938d: ce 27 60     DEC $6027
9390: e6 7d        INC $7d
9392: a5 12        LDA $12
9394: 60           RTS
9395: a9 3a        LDA #$3a
9397: 60           RTS

; Plot (Matoya): if(HERB || ev[0x6]){ d[$13] } else if(!CRYSTAL){ d[$11] } else { give HERB; take CRYSTAL; d[$12]; }
9398: ad 24 60     LDA $6024
939b: f0 03        BEQ +$03  [$93a0]
939d: a5 13        LDA $13
939f: 60           RTS
93a0: ad 23 60     LDA $6023
93a3: d0 0a        BNE +$0a  [$93af]
93a5: a0 06        LDY #$06
93a7: 20 79 90     JSR $9079   ; Set C if event Y set
93aa: b0 f1        BCS +$f1  [$939d]
93ac: a5 11        LDA $11
93ae: 60           RTS
93af: ee 24 60     INC $6024
93b2: ce 23 60     DEC $6023
93b5: e6 7d        INC $7d
93b7: a5 12        LDA $12
93b9: 60           RTS

; Plot (Unne): if(ev[0x0b]){ d[$13] } else if(!SLAB){ d[$11] } else { take SLAB; set ev[0x0b] }
93ba: a0 0b        LDY #$0b
93bc: 20 79 90     JSR $9079   ; Set C if event Y set
93bf: 90 03        BCC +$03  [$93c4]
93c1: a5 13        LDA $13
93c3: 60           RTS
93c4: ad 28 60     LDA $6028
93c7: d0 03        BNE +$03  [$93cc]
93c9: a5 11        LDA $11
93cb: 60           RTS
93cc: ce 28 60     DEC $6028
93cf: 20 7f 90     JSR $907f   ; Set event Y 
93d2: e6 7d        INC $7d
93d4: a5 12        LDA $12
93d6: 60           RTS

; Plot (vampire): vanish sprite 0x0c; battle 0x7c; d[$11]
93d7: a0 0c        LDY #$0c
93d9: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
93dc: a9 7c        LDA #$7c
93de: 20 c5 90     JSR $90c5   ; Set battle A
93e1: a5 11        LDA $11
93e3: 60           RTS

; Plot (Sarda): if(!ROD && sprite[0x0c] hidden){ give ROD; d[$11] } else { d[$12] }
93e4: ad 2a 60     LDA $602a
93e7: d0 0f        BNE +$0f  [$93f8]
93e9: a0 0c        LDY #$0c
93eb: 20 91 90     JSR $9091   ; Set C if sprite Y visible
93ee: b0 08        BCS +$08  [$93f8]
93f0: ee 2a 60     INC $602a
93f3: e6 7d        INC $7d
93f5: a5 11        LDA $11
93f7: 60           RTS
93f8: a5 12        LDA $12
93fa: 60           RTS

; Plot (Bahamut): if(ev[0x0e]){ d[$13] } else if(!TAIL){ d[$11] } else { take TAIL; set ev[0x0e]; class change; d[$12] }
93fb: a0 0e        LDY #$0e
93fd: 20 79 90     JSR $9079   ; Set C if event Y set
9400: 90 03        BCC +$03  [$9405]
9402: a5 13        LDA $13
9404: 60           RTS
9405: ad 2d 60     LDA $602d
9408: d0 03        BNE +$03  [$940d]
940a: a5 11        LDA $11
940c: 60           RTS
940d: ce 2d 60     DEC $602d
9410: 20 7f 90     JSR $907f   ; Set event Y 
9413: 20 ae 95     JSR $95ae   ; Perform class change
9416: e6 7d        INC $7d
9418: a5 12        LDA $12
941a: 60           RTS

; if(sprite[$10] hidden){ d[$11] } else { d[$12] }
941b: a4 10        LDY $10
941d: 20 91 90     JSR $9091   ; Set C if sprite Y visible
9420: b0 03        BCS +$03  [$9425]
9422: a5 11        LDA $11
9424: 60           RTS
9425: a5 12        LDA $12
9427: 60           RTS

; Plot (sub): if(!OXYALE){ d[$11] } else { vanish sprite[0x10]; d[$12] }
9428: ad 30 60     LDA $6030
942b: d0 03        BNE +$03  [$9430]
942d: a5 11        LDA $11
942f: 60           RTS
9430: a0 10        LDY #$10
9432: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
9435: a5 12        LDA $12
9437: 60           RTS

; Plot (robot): if(CUBE){ d[$12] } else { give CUBE; d[$11] }
9438: ad 2e 60     LDA $602e
943b: f0 03        BEQ +$03  [$9440]
943d: a5 12        LDA $12
943f: 60           RTS
9440: ee 2e 60     INC $602e
9443: a5 11        LDA $11
9445: e6 7d        INC $7d
9447: 60           RTS

; Plot (princess): if(LUTE){ d[$12] } else { give LUTE; d[$11] }
9448: ad 21 60     LDA $6021
944b: f0 03        BEQ +$03  [$9450]
944d: a5 12        LDA $12
944f: 60           RTS
9450: ee 21 60     INC $6021
9453: e6 7d        INC $7d
9455: a5 11        LDA $11
9457: 60           RTS

; Plot (fairy): if(OXYALE){ d[$12] } else { give OXYALE; d[$11] }
9458: ad 30 60     LDA $6030
945b: f0 03        BEQ +$03  [$9460]
945d: a5 12        LDA $12
945f: 60           RTS
9460: ee 30 60     INC $6030
9463: e6 7d        INC $7d
9465: a5 11        LDA $11
9467: 60           RTS

; Plot (titan): if(!RUBY){ d[$11] } else { take RUBY; vanish sprite 0x14; d[$12] }
9468: ad 29 60     LDA $6029
946b: d0 03        BNE +$03  [$9470]
946d: a5 11        LDA $11
946f: 60           RTS
9470: ce 29 60     DEC $6029
9473: a0 14        LDY #$14
9475: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
9478: a5 12        LDA $12
947a: e6 7d        INC $7d
947c: 60           RTS

; Plot (canoe sage): if(!canoe && earth orb){ give CANOE; d[$11] } else { d[$12] }
947d: ad 12 60     LDA $6012
9480: d0 0d        BNE +$0d  [$948f]
9482: ad 35 60     LDA $6035
9485: f0 08        BEQ +$08  [$948f]
9487: ee 12 60     INC $6012
948a: e6 7d        INC $7d
948c: a5 11        LDA $11
948e: 60           RTS
948f: a5 12        LDA $12
9491: 60           RTS

; Dialog $11
9492: a5 11        LDA $11
9494: 60           RTS

; Vanish sprite $10, show sprite $13, d[$11]
9495: a4 10        LDY $10
9497: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
949a: a4 13        LDY $13
949c: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
949f: a5 11        LDA $11
94a1: 60           RTS

; vanish sprite $10, d[$11]
94a2: a4 10        LDY $10
94a4: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
94a7: a5 11        LDA $11
94a9: 60           RTS

; vanish sprite $10, bat=$13, d[$11]
94aa: a4 10        LDY $10
94ac: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
94af: a5 13        LDA $13
94b1: 20 c5 90     JSR $90c5   ; Set battle A
94b4: a5 11        LDA $11
94b6: 60           RTS

; Do nothing?
94b7: 60           RTS

; if(item[$10]){ d[$11] } else { d[$12] }
94b8: a4 10        LDY $10
94ba: b9 20 60     LDA $6020,Y
94bd: f0 03        BEQ +$03  [$94c2]
94bf: a5 11        LDA $11
94c1: 60           RTS
94c2: a5 12        LDA $12
94c4: 60           RTS

; if(sprite[0x12] || LUTE){ d[$12] } else { d[$11] }
94c5: a0 12        LDY #$12
94c7: 20 91 90     JSR $9091   ; Set C if sprite Y visible
94ca: b0 08        BCS +$08  [$94d4]
94cc: ad 21 60     LDA $6021
94cf: d0 03        BNE +$03  [$94d4]
94d1: a5 11        LDA $11
94d3: 60           RTS
94d4: a5 12        LDA $12
94d6: 60           RTS

; if(bridge){ d[$11] } else { d[$12] }
94d7: ad 08 60     LDA $6008
94da: f0 03        BEQ +$03  [$94df]
94dc: a5 11        LDA $11
94de: 60           RTS
94df: a5 12        LDA $12
94e1: 60           RTS

; if(ev[$10]){ d[$12] } else { d[$11] }
94e2: a4 10        LDY $10
94e4: 20 79 90     JSR $9079   ; Set C if event Y set
94e7: b0 03        BCS +$03  [$94ec]
94e9: a5 11        LDA $11
94eb: 60           RTS
94ec: a5 12        LDA $12
94ee: 60           RTS

; Do nothing?
94ef: 60           RTS

; if(!sprite[0x12] visible || bridge){ d[$12] } else { d[$11] }
94f0: a0 12        LDY #$12
94f2: 20 91 90     JSR $9091   ; Set C if sprite Y visible
94f5: 90 08        BCC +$08  [$94ff]
94f7: ad 08 60     LDA $6008
94fa: d0 03        BNE +$03  [$94ff]
94fc: a5 11        LDA $11
94fe: 60           RTS
94ff: a5 12        LDA $12
9501: 60           RTS

; if(all orbs){ vanish sprite 0xca; d[$11] } else { d[$12] }
9502: ad 32 60     LDA $6032
9505: 2d 33 60     AND $6033
9508: 2d 34 60     AND $6034
950b: 2d 35 60     AND $6035
950e: f0 0c        BEQ +$0c  [$951c]
9510: a0 ca        LDY #$ca
9512: 20 96 90     JSR $9096   ; Vanish sprite Y (also sprite X in current map)
9515: e6 7d        INC $7d
9517: e6 7d        INC $7d
9519: a5 11        LDA $11
951b: 60           RTS
951c: a5 12        LDA $12
951e: 60           RTS

; if(all orbs){ d[$11] } else { d[$12] }
951f: ad 32 60     LDA $6032
9522: 2d 33 60     AND $6033
9525: 2d 34 60     AND $6034
9528: 2d 35 60     AND $6035
952b: f0 03        BEQ +$03  [$9530]
952d: a5 11        LDA $11
952f: 60           RTS
9530: a5 12        LDA $12
9532: 60           RTS

; if(!CANOE){ d[$11] } else { d[$12] }
9533: ad 12 60     LDA $6012
9536: f0 03        BEQ +$03  [$953b]
9538: a5 11        LDA $11
953a: 60           RTS
953b: a5 12        LDA $12
953d: 60           RTS

; if(canal closed){ d[$11] } else { d[$12] }
953e: ad 0c 60     LDA $600c
9541: d0 03        BNE +$03  [$9546]
9543: a5 11        LDA $11
9545: 60           RTS
9546: a5 12        LDA $12
9548: 60           RTS

; if(KEY && !TNT){ d[$11] } else { d[$12] }
9549: ad 25 60     LDA $6025
954c: f0 08        BEQ +$08  [$9556]
954e: ad 26 60     LDA $6026
9551: d0 03        BNE +$03  [$9556]
9553: a5 11        LDA $11
9555: 60           RTS
9556: a5 12        LDA $12
9558: 60           RTS

; if(sprite[0x0c] hidden && earth orb dark){ d[$11] } else { d[$12] }
9559: a0 0c        LDY #$0c
955b: 20 91 90     JSR $9091   ; Set C if sprite Y visible
955e: b0 08        BCS +$08  [$9568]
9560: ad 35 60     LDA $6035
9563: d0 03        BNE +$03  [$9568]
9565: a5 11        LDA $11
9567: 60           RTS
9568: a5 12        LDA $12
956a: 60           RTS

; if(!airship){ d[$11] } else { d[$12] }
956b: ad 04 60     LDA $6004
956e: d0 03        BNE +$03  [$9573]
9570: a5 11        LDA $11
9572: 60           RTS
9573: a5 12        LDA $12
9575: 60           RTS

; if(earth orb && !fire orb){ d[$11] } else { d[$12] }
9576: ad 35 60     LDA $6035
9579: f0 08        BEQ +$08  [$9583]
957b: ad 32 60     LDA $6032
957e: d0 03        BNE +$03  [$9583]
9580: a5 11        LDA $11
9582: 60           RTS
9583: a5 12        LDA $12
9585: 60           RTS

; Plot (robot): if(CUBE){ d[$12] } else { give CUBE; d[$11] }
; this version does no special music
9586: ad 2e 60     LDA $602e
9589: f0 03        BEQ +$03  [$958e]
958b: a5 12        LDA $12
958d: 60           RTS
958e: ee 2e 60     INC $602e
9591: a5 11        LDA $11
9593: 60           RTS

; Plot (chime): if(!ev[0xb]){ d[$13] } else if(CHIME){ d[$12] } else { give CHIME; d[$11] }
9594: a0 0b        LDY #$0b
9596: 20 79 90     JSR $9079   ; Set C if event Y set
9599: b0 03        BCS +$03  [$959e]
959b: a5 13        LDA $13
959d: 60           RTS
959e: ad 2c 60     LDA $602c
95a1: f0 03        BEQ +$03  [$95a6]
95a3: a5 12        LDA $12
95a5: 60           RTS
95a6: ee 2c 60     INC $602c
95a9: e6 7d        INC $7d
95ab: a5 11        LDA $11
95ad: 60           RTS

; Perform class change
95ae: ad 00 61     LDA $6100
95b1: 18           CLC
95b2: 69 06        ADC #$06
95b4: 8d 00 61     STA $6100
95b7: ad 40 61     LDA $6140
95ba: 18           CLC
95bb: 69 06        ADC #$06
95bd: 8d 40 61     STA $6140
95c0: ad 80 61     LDA $6180
95c3: 18           CLC
95c4: 69 06        ADC #$06
95c6: 8d 80 61     STA $6180
95c9: ad c0 61     LDA $61c0
95cc: 18           CLC
95cd: 69 06        ADC #$06
95cf: 8d c0 61     STA $61c0
95d2: e6 56        INC $56
95d4: 60           RTS

; Sprite dialog data. These are loaded into $10-13 before calling the dialog handler
95d5: 00 00 00 00 ; Sprite #00
95d9: 00 01 02 03 ; Sprite #01
95dd: 00 04 00 00 ; Sprite #02
95e1: 00 05 00 00 ; Sprite #03
95e5: 00 08 09 0a ; Sprite #04
95e9: 00 0b 0c 0d ; Sprite #05
95ed: 00 0e 0f 10 ; Sprite #06
95f1: 00 11 12 00 ; Sprite #07
95f5: 00 13 14 00 ; Sprite #08
95f9: 00 15 16 18 ; Sprite #09
95fd: 00 17 19 1a ; Sprite #0a
9601: 00 1b 1c 18 ; Sprite #0b
9605: 00 1d 00 00 ; Sprite #0c
9609: 00 1e 18 00 ; Sprite #0d
960d: 00 1f 20 18 ; Sprite #0e
9611: 13 21 22 00 ; Sprite #0f
9615: 00 25 26 00 ; Sprite #10
9619: 00 27 28 00 ; Sprite #11
961d: 00 06 07 00 ; Sprite #12
9621: 00 23 24 00 ; Sprite #13
9625: 00 29 2a 00 ; Sprite #14
9629: 00 2b 2c 00 ; Sprite #15
962d: 00 ff 00 00 ; Sprite #16
9631: 00 ff 00 00 ; Sprite #17
9635: 18 2e 00 19 ; Sprite #18
9639: 19 2f 00 1a ; Sprite #19
963d: 1a 30 00 7b ; Sprite #1a
9641: 1b fa 00 7a ; Sprite #1b
9645: 1c fb 00 79 ; Sprite #1c
9649: 1d fc 00 78 ; Sprite #1d
964d: 1e fd 00 77 ; Sprite #1e
9651: 00 00 00 00 ; Sprite #1f
9655: 12 31 32 00 ; Sprite #20
9659: 12 31 34 00 ; Sprite #21
965d: 12 33 34 00 ; Sprite #22
9661: 01 35 36 00 ; Sprite #23
9665: 12 33 34 00 ; Sprite #24
9669: 12 37 34 00 ; Sprite #25
966d: 00 38 39 00 ; Sprite #26
9671: 00 3a 34 00 ; Sprite #27
9675: 12 33 34 00 ; Sprite #28
9679: 12 3b 3c 00 ; Sprite #29
967d: 12 3d 3e 00 ; Sprite #2a
9681: 12 3f 34 00 ; Sprite #2b
9685: 05 40 41 00 ; Sprite #2c
9689: 12 33 32 00 ; Sprite #2d
968d: 05 42 41 00 ; Sprite #2e
9691: 06 33 34 00 ; Sprite #2f
9695: 12 31 34 00 ; Sprite #30
9699: 12 43 18 00 ; Sprite #31
969d: 00 46 18 00 ; Sprite #32
96a1: 12 33 34 00 ; Sprite #33
96a5: 00 45 44 00 ; Sprite #34
96a9: 00 47 00 00 ; Sprite #35
96ad: 00 48 00 00 ; Sprite #36
96b1: 12 33 49 00 ; Sprite #37
96b5: 12 33 4a 00 ; Sprite #38
96b9: 00 4b 00 00 ; Sprite #39
96bd: 00 4d 4c 00 ; Sprite #3a
96c1: 00 4e 4c 00 ; Sprite #3b
96c5: 00 4f 4c 00 ; Sprite #3c
96c9: 00 50 4c 00 ; Sprite #3d
96cd: 00 51 4c 00 ; Sprite #3e
96d1: 00 52 00 00 ; Sprite #3f
96d5: 00 53 00 00 ; Sprite #40
96d9: 00 54 00 00 ; Sprite #41
96dd: 04 55 56 00 ; Sprite #42
96e1: 04 57 58 00 ; Sprite #43
96e5: 06 59 5a 00 ; Sprite #44
96e9: 00 5b 00 00 ; Sprite #45
96ed: 06 5c 5a 00 ; Sprite #46
96f1: 04 5e 5d 00 ; Sprite #47
96f5: 00 42 00 00 ; Sprite #48
96f9: 06 59 5f 00 ; Sprite #49
96fd: 06 59 60 00 ; Sprite #4a
9701: 05 59 5a 00 ; Sprite #4b
9705: 06 59 5a 00 ; Sprite #4c
9709: 06 61 5a 00 ; Sprite #4d
970d: 06 62 5a 00 ; Sprite #4e
9711: 06 63 64 00 ; Sprite #4f
9715: 06 65 5a 00 ; Sprite #50
9719: 06 66 67 00 ; Sprite #51
971d: 00 68 00 00 ; Sprite #52
9721: 11 69 6b 00 ; Sprite #53
9725: 0b 6a 6b 00 ; Sprite #54
9729: 06 61 5a 00 ; Sprite #55
972d: 06 61 5a 00 ; Sprite #56
9731: 00 4c 00 00 ; Sprite #57
9735: 00 6c 00 00 ; Sprite #58
9739: 00 6d 6e 00 ; Sprite #59
973d: 00 6f 00 00 ; Sprite #5a
9741: 00 70 00 00 ; Sprite #5b
9745: 03 6f 71 00 ; Sprite #5c
9749: 15 73 72 00 ; Sprite #5d
974d: 00 74 00 00 ; Sprite #5e
9751: 00 75 6e 00 ; Sprite #5f
9755: 00 76 77 00 ; Sprite #60
9759: 00 71 00 00 ; Sprite #61
975d: 00 75 6e 00 ; Sprite #62
9761: 00 77 00 00 ; Sprite #63
9765: 00 78 00 00 ; Sprite #64
9769: 00 78 00 00 ; Sprite #65
976d: 00 78 00 00 ; Sprite #66
9771: 00 78 00 00 ; Sprite #67
9775: 0c 7a 79 00 ; Sprite #68
9779: 00 7b 00 00 ; Sprite #69
977d: 00 7c 7d 00 ; Sprite #6a
9781: 15 7f 7e 00 ; Sprite #6b
9785: 0c 81 80 00 ; Sprite #6c
9789: 00 83 18 00 ; Sprite #6d
978d: 00 82 00 00 ; Sprite #6e
9791: 00 84 00 00 ; Sprite #6f
9795: 15 86 85 00 ; Sprite #70
9799: 00 87 88 00 ; Sprite #71
979d: 00 89 00 00 ; Sprite #72
97a1: 0e 18 8a 00 ; Sprite #73
97a5: 15 86 8b 00 ; Sprite #74
97a9: 00 18 00 00 ; Sprite #75
97ad: 00 18 00 00 ; Sprite #76
97b1: 00 8c 00 00 ; Sprite #77
97b5: 00 96 8d 00 ; Sprite #78
97b9: 00 97 8e 00 ; Sprite #79
97bd: 00 98 8f 00 ; Sprite #7a
97c1: 00 99 90 00 ; Sprite #7b
97c5: 00 9a 91 00 ; Sprite #7c
97c9: 00 9b 92 00 ; Sprite #7d
97cd: 00 9c 93 00 ; Sprite #7e
97d1: 00 9d 94 00 ; Sprite #7f
97d5: 00 95 9e 00 ; Sprite #80
97d9: 12 9f 10 00 ; Sprite #81
97dd: 00 a0 00 00 ; Sprite #82
97e1: 00 a1 00 00 ; Sprite #83
97e5: 84 2d 00 00 ; Sprite #84
97e9: 00 e2 00 00 ; Sprite #85
97ed: 00 e3 00 00 ; Sprite #86
97f1: 00 e4 00 00 ; Sprite #87
97f5: 00 e5 00 00 ; Sprite #88
97f9: 00 e6 00 00 ; Sprite #89
97fd: 00 e7 00 00 ; Sprite #8a
9801: 00 e8 00 00 ; Sprite #8b
9805: 00 e9 00 00 ; Sprite #8c
9809: 00 ea 00 00 ; Sprite #8d
980d: 00 eb 00 00 ; Sprite #8e
9811: 00 ec 00 00 ; Sprite #8f
9815: 00 ed 00 00 ; Sprite #90
9819: 00 ee 00 00 ; Sprite #91
981d: 00 ef 00 00 ; Sprite #92
9821: 00 ae 00 00 ; Sprite #93
9825: 08 a3 a2 00 ; Sprite #94
9829: 00 a4 00 00 ; Sprite #95
982d: 00 a5 00 00 ; Sprite #96
9831: 00 a6 00 00 ; Sprite #97
9835: 00 a7 00 00 ; Sprite #98
9839: 00 a8 00 00 ; Sprite #99
983d: 14 aa a9 00 ; Sprite #9a
9841: 0e ab ac 00 ; Sprite #9b
9845: 00 ad 00 00 ; Sprite #9c
9849: 00 af 00 00 ; Sprite #9d
984d: 00 b0 00 00 ; Sprite #9e
9851: 00 b1 00 00 ; Sprite #9f
9855: 00 b2 00 00 ; Sprite #a0
9859: 00 b3 00 00 ; Sprite #a1
985d: 00 27 28 00 ; Sprite #a2
9861: 00 b4 00 00 ; Sprite #a3
9865: 00 b5 00 00 ; Sprite #a4
9869: 00 b6 00 00 ; Sprite #a5
986d: 00 b7 00 00 ; Sprite #a6
9871: 00 b8 00 00 ; Sprite #a7
9875: 00 b9 00 00 ; Sprite #a8
9879: 13 bb ba 00 ; Sprite #a9
987d: 00 bc 00 00 ; Sprite #aa
9881: 00 bd 00 00 ; Sprite #ab
9885: 00 be 00 00 ; Sprite #ac
9889: 00 bf 00 00 ; Sprite #ad
988d: 00 c0 00 00 ; Sprite #ae
9891: 0b c1 fe 00 ; Sprite #af
9895: 00 c2 00 00 ; Sprite #b0
9899: 00 c3 00 00 ; Sprite #b1
989d: 00 c4 00 00 ; Sprite #b2
98a1: 00 c5 00 00 ; Sprite #b3
98a5: 00 c6 00 00 ; Sprite #b4
98a9: 00 c7 00 00 ; Sprite #b5
98ad: 00 c8 00 00 ; Sprite #b6
98b1: 00 c9 00 00 ; Sprite #b7
98b5: 00 ca 00 00 ; Sprite #b8
98b9: 00 cb 00 00 ; Sprite #b9
98bd: 00 cc 00 00 ; Sprite #ba
98c1: 00 cd ce d0 ; Sprite #bb
98c5: 0b d0 cf 00 ; Sprite #bc
98c9: 0b d0 d1 00 ; Sprite #bd
98cd: 0b d0 d2 00 ; Sprite #be
98d1: 0b d0 d3 00 ; Sprite #bf
98d5: 0b d0 d4 00 ; Sprite #c0
98d9: 0b d0 d5 00 ; Sprite #c1
98dd: 0b d0 d6 00 ; Sprite #c2
98e1: 0b d0 d7 00 ; Sprite #c3
98e5: 0b d0 d8 00 ; Sprite #c4
98e9: 0b d0 d9 00 ; Sprite #c5
98ed: 0b d0 da 00 ; Sprite #c6
98f1: 0b d0 db 00 ; Sprite #c7
98f5: 0b d0 dc 00 ; Sprite #c8
98f9: 0b d0 dd 00 ; Sprite #c9
98fd: 00 21 22 00 ; Sprite #ca
9901: 00 d0 00 00 ; Sprite #cb
9905: 00 de 00 00 ; Sprite #cc
9909: 00 df 00 00 ; Sprite #cd
990d: 00 e0 00 00 ; Sprite #ce
9911: 00 e1 00 00 ; Sprite #cf

9915: a9 00        LDA #$00
9917: 8d 01 20     STA $2001
991a: 8d 15 40     STA $4015
991d: a9 08        LDA #$08
991f: 85 ff        STA $ff
9921: 20 06 e9     JSR $e906   ; Load menu screen tiles and palettes
9924: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
9927: a9 0a        LDA #$0a
9929: 85 38        STA $38
992b: a9 05        LDA #$05
992d: 85 39        STA $39
992f: a9 0e        LDA #$0e
9931: 85 3c        STA $3c
9933: a9 13        LDA #$13
9935: 85 3d        STA $3d
9937: a9 00        LDA #$00
9939: 85 37        STA $37
993b: a2 1f        LDX #$1f    ; copy data
993d: bd 71 9b     LDA $9b71,X
9940: 9d 00 03     STA $0300,X
9943: ca           DEX
9944: 10 f7        BPL +$f7  [$993d]
9946: ad 01 61     LDA $6101   ; Copy dead/stoned flag
9949: 18           CLC
994a: 69 01        ADC #$01
994c: 29 02        AND #$02
994e: 8d 00 03     STA $0300
9951: ad 41 61     LDA $6141
9954: 18           CLC
9955: 69 01        ADC #$01
9957: 29 02        AND #$02
9959: 8d 08 03     STA $0308
995c: ad 81 61     LDA $6181
995f: 18           CLC
9960: 69 01        ADC #$01
9962: 29 02        AND #$02
9964: 8d 10 03     STA $0310
9967: ad c1 61     LDA $61c1
996a: 18           CLC
996b: 69 01        ADC #$01
996d: 29 02        AND #$02
996f: 8d 18 03     STA $0318
9972: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
9975: 20 91 9b     JSR $9b91   ; Output names for reordering screen
9978: 20 00 fe     JSR $fe00   ; wait for V-blank
997b: 20 50 d8     JSR $d850   ; Upload palettes: BG at $03c0, sprite at $03d0
997e: a9 55        LDA #$55
9980: 85 4b        STA $4b
9982: a5 ff        LDA $ff
9984: 8d 00 20     STA $2000
9987: a9 00        LDA #$00
9989: 8d 05 20     STA $2005
998c: 8d 05 20     STA $2005
998f: 20 3c c4     JSR $c43c   ; Clear sprites
9992: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
9995: a5 20        LDA $20
9997: 29 0c        AND #$0c
9999: 85 64        STA $64
999b: a9 00        LDA #$00
999d: 85 24        STA $24
999f: 85 25        STA $25
99a1: 85 62        STA $62
99a3: 85 63        STA $63
99a5: 85 61        STA $61
99a7: 20 00 fe     JSR $fe00   ; wait for V-blank
99aa: a9 02        LDA #$02    ; upload sprites
99ac: 8d 14 40     STA $4014
99af: a5 ff        LDA $ff
99b1: 8d 00 20     STA $2000
99b4: a9 1e        LDA #$1e
99b6: 8d 01 20     STA $2001
99b9: a9 00        LDA #$00
99bb: 8d 05 20     STA $2005
99be: 8d 05 20     STA $2005
99c1: a9 0e        LDA #$0e
99c3: 85 57        STA $57
99c5: 20 89 c6     JSR $c689   ; Start music or play current notes
99c8: 20 3c c4     JSR $c43c   ; Clear sprites
99cb: 20 54 9b     JSR $9b54   ; Setup sprites for reordering screen
99ce: 20 2d 9b     JSR $9b2d   ; Set cursor for reordering screen
99d1: 20 dd 99     JSR $99dd   ; Get reordering screen buttons
99d4: 20 89 9a     JSR $9a89
99d7: 20 14 9a     JSR $9a14
99da: 4c a7 99     JMP $99a7

; Get reordering screen buttons
99dd: a5 20        LDA $20
99df: 29 0c        AND #$0c
99e1: 85 17        STA $17
99e3: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
99e6: a5 24        LDA $24
99e8: 05 25        ORA $25
99ea: f0 03        BEQ +$03  [$99ef]
99ec: 4c 84 ad     JMP $ad84   ; Sound stuff (menu move bleep?)
99ef: a5 20        LDA $20
99f1: 29 0c        AND #$0c
99f3: f0 07        BEQ +$07  [$99fc]
99f5: c5 17        CMP $17
99f7: f0 03        BEQ +$03  [$99fc]
99f9: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
99fc: 60           RTS

99fd: a5 63        LDA $63
99ff: f0 0d        BEQ +$0d  [$9a0e]
9a01: a9 04        LDA #$04
9a03: 85 63        STA $63
9a05: a5 62        LDA $62
9a07: 85 61        STA $61
9a09: a9 00        LDA #$00
9a0b: 85 25        STA $25
9a0d: 60           RTS
9a0e: 68           PLA
9a0f: 68           PLA
9a10: 4c bd 9b     JMP $9bbd
9a13: 60           RTS

9a14: a4 63        LDY $63
9a16: f0 04        BEQ +$04  [$9a1c]
9a18: c0 02        CPY #$02
9a1a: d0 f7        BNE +$f7  [$9a13]
9a1c: a5 25        LDA $25
9a1e: d0 dd        BNE +$dd  [$99fd]
9a20: a5 24        LDA $24
9a22: d0 23        BNE +$23  [$9a47]
9a24: a5 20        LDA $20
9a26: 29 0c        AND #$0c
9a28: c5 64        CMP $64
9a2a: f0 e7        BEQ +$e7  [$9a13]
9a2c: 85 64        STA $64
9a2e: 29 0c        AND #$0c
9a30: f0 e1        BEQ +$e1  [$9a13]
9a32: c9 08        CMP #$08
9a34: f0 07        BEQ +$07  [$9a3d]
9a36: a5 61        LDA $61
9a38: 18           CLC
9a39: 69 08        ADC #$08
9a3b: d0 05        BNE +$05  [$9a42]
9a3d: a5 61        LDA $61
9a3f: 38           SEC
9a40: e9 08        SBC #$08
9a42: 29 1f        AND #$1f
9a44: 85 61        STA $61
9a46: 60           RTS
9a47: a9 00        LDA #$00
9a49: 85 24        STA $24
9a4b: a5 63        LDA $63
9a4d: d0 07        BNE +$07  [$9a56]
9a4f: e6 63        INC $63
9a51: a5 61        LDA $61
9a53: 85 62        STA $62
9a55: 60           RTS
9a56: a5 61        LDA $61
9a58: c5 62        CMP $62
9a5a: d0 07        BNE +$07  [$9a63]
9a5c: a5 62        LDA $62
9a5e: 85 61        STA $61
9a60: e6 63        INC $63
9a62: 60           RTS
9a63: a8           TAY
9a64: d0 07        BNE +$07  [$9a6d]
9a66: a6 62        LDX $62
9a68: bd 00 03     LDA $0300,X
9a6b: d0 ef        BNE +$ef  [$9a5c]
9a6d: a6 62        LDX $62
9a6f: d0 05        BNE +$05  [$9a76]
9a71: b9 00 03     LDA $0300,Y
9a74: d0 e6        BNE +$e6  [$9a5c]
9a76: b9 05 03     LDA $0305,Y
9a79: 85 10        STA $10
9a7b: bd 05 03     LDA $0305,X
9a7e: 99 05 03     STA $0305,Y
9a81: a5 10        LDA $10
9a83: 9d 05 03     STA $0305,X
9a86: e6 63        INC $63
9a88: 60           RTS

9a89: a5 63        LDA $63
9a8b: f0 fb        BEQ +$fb  [$9a88]
9a8d: c9 02        CMP #$02
9a8f: f0 f7        BEQ +$f7  [$9a88]
9a91: c9 01        CMP #$01
9a93: d0 10        BNE +$10  [$9aa5]
9a95: a4 62        LDY $62
9a97: b9 02 03     LDA $0302,Y
9a9a: c9 89        CMP #$89
9a9c: 90 1b        BCC +$1b  [$9ab9]
9a9e: 38           SEC
9a9f: e9 01        SBC #$01
9aa1: 99 02 03     STA $0302,Y
9aa4: 60           RTS
9aa5: c9 03        CMP #$03
9aa7: d0 13        BNE +$13  [$9abc]
9aa9: a4 61        LDY $61
9aab: b9 02 03     LDA $0302,Y
9aae: c9 a8        CMP #$a8
9ab0: b0 07        BCS +$07  [$9ab9]
9ab2: 18           CLC
9ab3: 69 01        ADC #$01
9ab5: 99 02 03     STA $0302,Y
9ab8: 60           RTS
9ab9: e6 63        INC $63
9abb: 60           RTS
9abc: a4 61        LDY $61
9abe: 20 fb 9a     JSR $9afb
9ac1: 90 05        BCC +$05  [$9ac8]
9ac3: a4 62        LDY $62
9ac5: 4c fb 9a     JMP $9afb
9ac8: a4 62        LDY $62
9aca: 20 fb 9a     JSR $9afb
9acd: b0 b9        BCS +$b9  [$9a88]
9acf: a4 61        LDY $61
9ad1: a9 08        LDA #$08
9ad3: a6 62        LDX $62
9ad5: 48           PHA
9ad6: b9 00 03     LDA $0300,Y
9ad9: 48           PHA
9ada: bd 00 03     LDA $0300,X
9add: 99 00 03     STA $0300,Y
9ae0: 68           PLA
9ae1: 9d 00 03     STA $0300,X
9ae4: e8           INX
9ae5: c8           INY
9ae6: 68           PLA
9ae7: 38           SEC
9ae8: e9 01        SBC #$01
9aea: d0 e9        BNE +$e9  [$9ad5]
9aec: a9 00        LDA #$00
9aee: 85 63        STA $63
9af0: a5 62        LDA $62
9af2: 85 61        STA $61
9af4: a9 01        LDA #$01
9af6: 85 37        STA $37
9af8: 4c 91 9b     JMP $9b91   ; Output names for reordering screen

9afb: b9 03 03     LDA $0303,Y
9afe: d9 05 03     CMP $0305,Y
9b01: d0 1a        BNE +$1a  [$9b1d]
9b03: b9 02 03     LDA $0302,Y
9b06: d9 04 03     CMP $0304,Y
9b09: d0 02        BNE +$02  [$9b0d]
9b0b: 18           CLC
9b0c: 60           RTS
9b0d: b0 07        BCS +$07  [$9b16]
9b0f: 69 01        ADC #$01
9b11: 99 02 03     STA $0302,Y
9b14: 38           SEC
9b15: 60           RTS
9b16: e9 01        SBC #$01
9b18: 99 02 03     STA $0302,Y
9b1b: 38           SEC
9b1c: 60           RTS
9b1d: b0 07        BCS +$07  [$9b26]
9b1f: 69 01        ADC #$01
9b21: 99 03 03     STA $0303,Y
9b24: 38           SEC
9b25: 60           RTS
9b26: e9 01        SBC #$01
9b28: 99 03 03     STA $0303,Y
9b2b: 38           SEC
9b2c: 60           RTS

; Set cursor for reordering screen
9b2d: a4 61        LDY $61
9b2f: a9 58        LDA #$58
9b31: 85 40        STA $40
9b33: b9 03 03     LDA $0303,Y
9b36: 18           CLC
9b37: 69 08        ADC #$08
9b39: 85 41        STA $41
9b3b: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

9b3e: a0 00        LDY #$00
9b40: b9 00 03     LDA $0300,Y
9b43: c5 10        CMP $10
9b45: f0 0b        BEQ +$0b  [$9b52]
9b47: 98           TYA
9b48: 18           CLC
9b49: 69 08        ADC #$08
9b4b: 29 1f        AND #$1f
9b4d: a8           TAY
9b4e: d0 f0        BNE +$f0  [$9b40]
9b50: 38           SEC
9b51: 60           RTS
9b52: 18           CLC
9b53: 60           RTS

; Setup sprites for reordering screen
9b54: a9 00        LDA #$00
9b56: 48           PHA
9b57: a8           TAY
9b58: b9 02 03     LDA $0302,Y
9b5b: 85 40        STA $40
9b5d: b9 03 03     LDA $0303,Y
9b60: 85 41        STA $41
9b62: b9 01 03     LDA $0301,Y
9b65: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
9b68: 68           PLA
9b69: 18           CLC
9b6a: 69 08        ADC #$08
9b6c: c9 20        CMP #$20
9b6e: 90 e6        BCC +$e6  [$9b56]
9b70: 60           RTS

; Data for party order screen
9b71: 00 00 98 38 98 38 00 00
9b79: 00 40 98 58 98 58 00 00
9b81: 00 80 98 78 98 78 00 00
9b89: 00 c0 98 98 98 98 00 00

; Output names for reordering screen
9b91: a9 0d        LDA #$0d
9b93: 85 3a        STA $3a
9b95: a9 08        LDA #$08
9b97: 85 3b        STA $3b
9b99: ad 01 03     LDA $0301
9b9c: 20 2e 9c     JSR $9c2e   ; Output name of warrior in A
9b9f: a9 0c        LDA #$0c
9ba1: 85 3b        STA $3b
9ba3: ad 09 03     LDA $0309
9ba6: 20 2e 9c     JSR $9c2e   ; Output name of warrior in A
9ba9: a9 10        LDA #$10
9bab: 85 3b        STA $3b
9bad: ad 11 03     LDA $0311
9bb0: 20 2e 9c     JSR $9c2e   ; Output name of warrior in A
9bb3: a9 14        LDA #$14
9bb5: 85 3b        STA $3b
9bb7: ad 19 03     LDA $0319
9bba: 4c 2e 9c     JMP $9c2e   ; Output name of warrior in A

9bbd: a2 00        LDX #$00    ; copy data for reordering
9bbf: bd 00 61     LDA $6100,X
9bc2: 9d 00 6c     STA $6c00,X
9bc5: bd 00 63     LDA $6300,X
9bc8: 9d 00 6d     STA $6d00,X
9bcb: e8           INX
9bcc: d0 f1        BNE +$f1  [$9bbf]
9bce: ae 01 03     LDX $0301
9bd1: a0 00        LDY #$00
9bd3: 20 eb 9b     JSR $9beb
9bd6: ae 09 03     LDX $0309
9bd9: a0 40        LDY #$40
9bdb: 20 eb 9b     JSR $9beb
9bde: ae 11 03     LDX $0311
9be1: a0 80        LDY #$80
9be3: 20 eb 9b     JSR $9beb
9be6: ae 19 03     LDX $0319
9be9: a0 c0        LDY #$c0
9beb: a9 40        LDA #$40
9bed: 85 10        STA $10
9bef: bd 00 6c     LDA $6c00,X
9bf2: 99 00 61     STA $6100,Y
9bf5: bd 00 6d     LDA $6d00,X
9bf8: 99 00 63     STA $6300,Y
9bfb: e8           INX
9bfc: c8           INY
9bfd: c6 10        DEC $10
9bff: d0 ee        BNE +$ee  [$9bef]
9c01: 60           RTS

; clear screen (tile 0 pal 3)
9c02: ad 02 20     LDA $2002  ; clear v-blank flag
9c05: a9 20        LDA #$20   ;; clear name table to tile 0
9c07: 8d 06 20     STA $2006
9c0a: a9 00        LDA #$00
9c0c: 8d 06 20     STA $2006
9c0f: a0 00        LDY #$00
9c11: 98           TYA
9c12: a2 03        LDX #$03
9c14: 8d 07 20     STA $2007
9c17: c8           INY
9c18: d0 fa        BNE +$fa  [$9c14]
9c1a: ca           DEX
9c1b: d0 f7        BNE +$f7  [$9c14]
9c1d: 8d 07 20     STA $2007
9c20: c8           INY
9c21: c0 c0        CPY #$c0
9c23: 90 f8        BCC +$f8  [$9c1d]
9c25: a9 ff        LDA #$ff   ;; palette 3
9c27: 8d 07 20     STA $2007
9c2a: c8           INY
9c2b: d0 fa        BNE +$fa  [$9c27]
9c2d: 60           RTS

; Output name of warrior in A
9c2e: aa           TAX
9c2f: bd 02 61     LDA $6102,X
9c32: 85 5c        STA $5c
9c34: bd 03 61     LDA $6103,X
9c37: 85 5d        STA $5d
9c39: bd 04 61     LDA $6104,X
9c3c: 85 5e        STA $5e
9c3e: bd 05 61     LDA $6105,X
9c41: 85 5f        STA $5f
9c43: a9 5c        LDA #$5c
9c45: 85 3e        STA $3e
9c47: a9 00        LDA #$00
9c49: 85 3f        STA $3f
9c4b: a9 0e        LDA #$0e
9c4d: 85 57        STA $57
9c4f: 85 58        STA $58
9c51: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Do class selection screen
9c54: a9 00        LDA #$00
9c56: 8d 01 20     STA $2001
9c59: a9 0f        LDA #$0f
9c5b: 8d 15 40     STA $4015
9c5e: 20 fa e8     JSR $e8fa   ; Load battle sprite tiles for classes 0-5 and palettes
9c61: ad cd 03     LDA $03cd   ; fix BG palette 0
9c64: 8d c1 03     STA $03c1
9c67: ad cf 03     LDA $03cf
9c6a: 8d c3 03     STA $03c3
9c6d: a9 16        LDA #$16
9c6f: 8d c2 03     STA $03c2
9c72: a2 3f        LDX #$3f    ; load information for class selection screen
9c74: bd ae a0     LDA $a0ae,X
9c77: 9d 00 03     STA $0300,X
9c7a: ca           DEX
9c7b: 10 f7        BPL +$f7  [$9c74]
9c7d: a9 00        LDA #$00
9c7f: 85 60        STA $60
9c81: a9 00        LDA #$00    ; Configure 1st warrior
9c83: 85 67        STA $67
9c85: 20 15 9d     JSR $9d15
9c88: b0 f7        BCS +$f7  [$9c81]
9c8a: a9 10        LDA #$10    ; Configure 2nd warrior
9c8c: 85 67        STA $67
9c8e: 20 15 9d     JSR $9d15
9c91: b0 ee        BCS +$ee  [$9c81]
9c93: a9 20        LDA #$20    ; Configure 3rd warrior
9c95: 85 67        STA $67
9c97: 20 15 9d     JSR $9d15
9c9a: b0 ee        BCS +$ee  [$9c8a]
9c9c: a9 30        LDA #$30    ; Configure 4th warrior
9c9e: 85 67        STA $67
9ca0: 20 15 9d     JSR $9d15
9ca3: b0 ee        BCS +$ee  [$9c93]
9ca5: 20 f8 9c     JSR $9cf8   ; Output BG for class selection screen
9ca8: 20 3c c4     JSR $c43c   ; Clear sprites
9cab: 20 4e 9f     JSR $9f4e   ; Setup sprites for the 4 warriors
9cae: 20 00 fe     JSR $fe00   ; wait for V-blank
9cb1: a9 02        LDA #$02    ; upload sprites
9cb3: 8d 14 40     STA $4014
9cb6: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
9cb9: a5 20        LDA $20
9cbb: 29 40        AND #$40
9cbd: d0 dd        BNE +$dd  [$9c9c]
9cbf: a9 00        LDA #$00    ;; Save warrior classes and names
9cc1: 8d 01 20     STA $2001
9cc4: a2 00        LDX #$00
9cc6: 20 d5 9c     JSR $9cd5
9cc9: a2 10        LDX #$10
9ccb: 20 d5 9c     JSR $9cd5
9cce: a2 20        LDX #$20
9cd0: 20 d5 9c     JSR $9cd5
9cd3: a2 30        LDX #$30
9cd5: 8a           TXA
9cd6: 0a           ASL
9cd7: 0a           ASL
9cd8: a8           TAY
9cd9: bd 00 03     LDA $0300,X
9cdc: 99 00 61     STA $6100,Y
9cdf: bd 02 03     LDA $0302,X
9ce2: 99 02 61     STA $6102,Y
9ce5: bd 03 03     LDA $0303,X
9ce8: 99 03 61     STA $6103,Y
9ceb: bd 04 03     LDA $0304,X
9cee: 99 04 61     STA $6104,Y
9cf1: bd 05 03     LDA $0305,X
9cf4: 99 05 61     STA $6105,Y
9cf7: 60           RTS

; Output BG for class selection screen
9cf8: a9 08        LDA #$08    ; will show BG and sprites
9cfa: 85 ff        STA $ff
9cfc: a9 00        LDA #$00
9cfe: 8d 01 20     STA $2001
9d01: 85 24        STA $24
9d03: 85 25        STA $25
9d05: 85 20        STA $20
9d07: 85 61        STA $61
9d09: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
9d0c: 20 90 9e     JSR $9e90   ; Draw windows for class selection screen
9d0f: 20 bc 9e     JSR $9ebc   ; Output names and class names for class selection screen
9d12: 4c 80 b7     JMP $b780   ; wait for v-blank, upload palettes, and some other stuff

; Configure warrior referenced in $67
9d15: 20 f8 9c     JSR $9cf8   ; Output BG for class selection screen
9d18: 20 33 9e     JSR $9e33   ; Setup class selection screen sprites, get buttons, and bleep if necessary
9d1b: a5 24        LDA $24     ; A pressed?
9d1d: d0 31        BNE +$31  [$9d50]
9d1f: a5 25        LDA $25     ; B pressed?
9d21: f0 02        BEQ +$02  [$9d25]
9d23: 38           SEC         ; B pressed: go back 1 warrior
9d24: 60           RTS
9d25: a5 20        LDA $20     ; New direction pressed?
9d27: 29 0f        AND #$0f
9d29: c5 61        CMP $61
9d2b: f0 eb        BEQ +$eb  [$9d18]
9d2d: 85 61        STA $61
9d2f: c9 00        CMP #$00
9d31: f0 e5        BEQ +$e5  [$9d18]
9d33: a6 67        LDX $67     ;; YES: Increment class and loop
9d35: 18           CLC
9d36: bd 00 03     LDA $0300,X
9d39: 69 01        ADC #$01
9d3b: c9 06        CMP #$06
9d3d: 90 02        BCC +$02  [$9d41]
9d3f: a9 00        LDA #$00
9d41: 9d 00 03     STA $0300,X
9d44: a9 01        LDA #$01
9d46: 85 37        STA $37
9d48: a6 67        LDX $67
9d4a: 20 cc 9e     JSR $9ecc
9d4d: 4c 18 9d     JMP $9d18  ; loop
9d50: a9 00        LDA #$00   ;; A Pressed: Do name
9d52: 8d 01 20     STA $2001
9d55: 85 37        STA $37
9d57: 85 24        STA $24
9d59: 85 25        STA $25
9d5b: 85 20        STA $20
9d5d: 85 61        STA $61
9d5f: 85 62        STA $62
9d61: 85 64        STA $64
9d63: 85 65        STA $65
9d65: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
9d68: 20 b0 9f     JSR $9fb0   ; Draw name screen
9d6b: a6 67        LDX $67
9d6d: a9 ff        LDA #$ff    ; Clear out existing name
9d6f: 9d 02 03     STA $0302,X
9d72: 9d 03 03     STA $0303,X
9d75: 9d 04 03     STA $0304,X
9d78: 9d 05 03     STA $0305,X
9d7b: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
9d7e: a9 01        LDA #$01
9d80: 85 37        STA $37
9d82: 20 4e 9e     JSR $9e4e   ; Name screen cursor, VBlank, sounds
9d85: a5 24        LDA $24     ; A pressed?
9d87: d0 67        BNE +$67  [$9df0]
9d89: a5 25        LDA $25     ; B pressed?
9d8b: d0 4e        BNE +$4e  [$9ddb]
9d8d: a5 20        LDA $20     ; New direction?
9d8f: 29 0f        AND #$0f
9d91: c5 61        CMP $61
9d93: f0 ed        BEQ +$ed  [$9d82]
9d95: 85 61        STA $61
9d97: c9 00        CMP #$00
9d99: f0 e7        BEQ +$e7  [$9d82]
9d9b: c9 04        CMP #$04
9d9d: 90 1e        BCC +$1e  [$9dbd]
9d9f: c9 08        CMP #$08
9da1: d0 0b        BNE +$0b  [$9dae]
9da3: c6 65        DEC $65     ;; UP Pressed
9da5: 10 db        BPL +$db  [$9d82]
9da7: a9 06        LDA #$06
9da9: 85 65        STA $65
9dab: 4c 82 9d     JMP $9d82
9dae: e6 65        INC $65     ;; DOWN Pressed
9db0: a5 65        LDA $65
9db2: c9 07        CMP #$07
9db4: 90 cc        BCC +$cc  [$9d82]
9db6: a9 00        LDA #$00
9db8: 85 65        STA $65
9dba: 4c 82 9d     JMP $9d82
9dbd: c9 02        CMP #$02
9dbf: d0 0b        BNE +$0b  [$9dcc]
9dc1: c6 64        DEC $64     ;; LEFT pressed
9dc3: 10 bd        BPL +$bd  [$9d82]
9dc5: a9 09        LDA #$09
9dc7: 85 64        STA $64
9dc9: 4c 82 9d     JMP $9d82
9dcc: e6 64        INC $64     ;; RIGHT pressed
9dce: a5 64        LDA $64
9dd0: c9 0a        CMP #$0a
9dd2: 90 ae        BCC +$ae  [$9d82]
9dd4: a9 00        LDA #$00
9dd6: 85 64        STA $64
9dd8: 4c 82 9d     JMP $9d82
9ddb: a9 ff        LDA #$ff    ;; B Pressed
9ddd: 85 10        STA $10     ; Letter to set: space
9ddf: a5 62        LDA $62     ; Backspace 1
9de1: 38           SEC
9de2: e9 01        SBC #$01
9de4: 30 02        BMI +$02  [$9de8]
9de6: 85 62        STA $62
9de8: a9 00        LDA #$00     ; Inc 0 after writing the letter
9dea: 85 63        STA $63
9dec: 85 25        STA $25
9dee: f0 25        BEQ +$25  [$9e15]
9df0: a6 65        LDX $65      ;; A Pressed
9df2: a9 00        LDA #$00     ; Load letter pointed at
9df4: 85 24        STA $24
9df6: bd 0a a0     LDA $a00a,X
9df9: 18           CLC
9dfa: 65 64        ADC $64
9dfc: 0a           ASL
9dfd: aa           TAX
9dfe: 90 06        BCC +$06  [$9e06]
9e00: bd 11 a1     LDA $a111,X
9e03: 4c 09 9e     JMP $9e09
9e06: bd 11 a0     LDA $a011,X
9e09: 85 10        STA $10
9e0b: a9 01        LDA #$01     ; Inc 1 after writing the letter
9e0d: 85 63        STA $63
9e0f: a5 62        LDA $62      ; Wait, is the name done? Return
9e11: c9 04        CMP #$04
9e13: b0 1c        BCS +$1c  [$9e31]
9e15: a5 62        LDA $62      ; Write letter to name field in warrior struct
9e17: 18           CLC
9e18: 65 67        ADC $67
9e1a: aa           TAX
9e1b: a5 10        LDA $10
9e1d: 9d 02 03     STA $0302,X
9e20: 20 7d 9f     JSR $9f7d    ; Draw name for warrior in $67 for name screen
9e23: a5 62        LDA $62
9e25: 18           CLC
9e26: 65 63        ADC $63
9e28: 10 02        BPL +$02  [$9e2c]
9e2a: a9 00        LDA #$00
9e2c: 85 62        STA $62
9e2e: 4c 82 9d     JMP $9d82    ; Loop
9e31: 18           CLC
9e32: 60           RTS

; Setup class selection screen sprites, get buttons, and bleep if necessary
9e33: 20 3c c4     JSR $c43c   ; Clear sprites
9e36: 20 4e 9f     JSR $9f4e   ; Setup sprites for the 4 warriors
9e39: 20 26 9f     JSR $9f26   ; Set cursor for class selection screen
9e3c: 20 00 fe     JSR $fe00   ; wait for V-blank
9e3f: a9 02        LDA #$02    ; upload sprites
9e41: 8d 14 40     STA $4014
9e44: a9 0e        LDA #$0e
9e46: 85 57        STA $57
9e48: 20 89 c6     JSR $c689   ; Start music or play current notes
9e4b: 4c 70 9e     JMP $9e70   ; get button presses and bleep if anything

; Name screen cursor, VBlank, sounds
9e4e: 20 3c c4     JSR $c43c   ; Clear sprites
9e51: 20 35 9f     JSR $9f35   ; Draw cursor at ($64*16+32, $65*16+80) (for name screen)
9e54: 20 00 fe     JSR $fe00   ; wait for V-blank
9e57: a9 02        LDA #$02    ; upload sprites
9e59: 8d 14 40     STA $4014
9e5c: a5 ff        LDA $ff
9e5e: 8d 00 20     STA $2000
9e61: a9 00        LDA #$00
9e63: 8d 05 20     STA $2005
9e66: 8d 05 20     STA $2005
9e69: a9 0e        LDA #$0e
9e6b: 85 57        STA $57
9e6d: 20 89 c6     JSR $c689   ; Start music or play current notes

; get button presses and bleep if anything
9e70: a5 20        LDA $20
9e72: 29 0f        AND #$0f
9e74: 85 17        STA $17
9e76: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
9e79: a5 24        LDA $24
9e7b: 05 25        ORA $25
9e7d: f0 03        BEQ +$03  [$9e82]
9e7f: 4c 84 ad     JMP $ad84   ; Sound stuff (menu move bleep?)
9e82: a5 20        LDA $20
9e84: 29 0f        AND #$0f
9e86: f0 07        BEQ +$07  [$9e8f]
9e88: c5 17        CMP $17
9e8a: f0 03        BEQ +$03  [$9e8f]
9e8c: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
9e8f: 60           RTS

; Draw windows for class selection screen
9e90: a9 00        LDA #$00
9e92: 85 1f        STA $1f
9e94: 20 a3 9e     JSR $9ea3
9e97: a5 1f        LDA $1f
9e99: 18           CLC
9e9a: 69 10        ADC #$10
9e9c: 85 1f        STA $1f
9e9e: c9 40        CMP #$40
9ea0: 90 f2        BCC +$f2  [$9e94]
9ea2: 60           RTS
9ea3: a6 1f        LDX $1f
9ea5: bd 0c 03     LDA $030c,X
9ea8: 85 38        STA $38
9eaa: bd 0d 03     LDA $030d,X
9ead: 85 39        STA $39
9eaf: a9 0a        LDA #$0a
9eb1: 85 3c        STA $3c
9eb3: 85 3d        STA $3d
9eb5: a9 00        LDA #$00
9eb7: 85 37        STA $37
9eb9: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; Output names and class names for class selection screen
9ebc: a9 00        LDA #$00
9ebe: 48           PHA
9ebf: 20 cb 9e     JSR $9ecb
9ec2: 68           PLA
9ec3: 18           CLC
9ec4: 69 10        ADC #$10
9ec6: c9 40        CMP #$40
9ec8: 90 f4        BCC +$f4  [$9ebe]
9eca: 60           RTS
9ecb: aa           TAX         ; Output class name for warrior in A
9ecc: bd 08 03     LDA $0308,X
9ecf: 85 3a        STA $3a
9ed1: bd 09 03     LDA $0309,X
9ed4: 85 3b        STA $3b
9ed6: bd 00 03     LDA $0300,X
9ed9: 18           CLC
9eda: 69 f0        ADC #$f0
9edc: 85 5f        STA $5f
9ede: a9 02        LDA #$02
9ee0: 85 5e        STA $5e
9ee2: a9 5e        LDA #$5e
9ee4: 85 3e        STA $3e
9ee6: a9 00        LDA #$00
9ee8: 85 3f        STA $3f
9eea: a9 0e        LDA #$0e
9eec: 85 57        STA $57
9eee: 85 58        STA $58
9ef0: 8a           TXA
9ef1: 48           PHA
9ef2: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
9ef5: 68           PLA
9ef6: aa           TAX         ; Output name for warrior in A
9ef7: bd 02 03     LDA $0302,X
9efa: 85 5c        STA $5c
9efc: bd 03 03     LDA $0303,X
9eff: 85 5d        STA $5d
9f01: bd 04 03     LDA $0304,X
9f04: 85 5e        STA $5e
9f06: bd 05 03     LDA $0305,X
9f09: 85 5f        STA $5f
9f0b: bd 06 03     LDA $0306,X
9f0e: 85 3a        STA $3a
9f10: bd 07 03     LDA $0307,X
9f13: 85 3b        STA $3b
9f15: a9 5c        LDA #$5c
9f17: 85 3e        STA $3e
9f19: a9 00        LDA #$00
9f1b: 85 3f        STA $3f
9f1d: a9 0e        LDA #$0e
9f1f: 85 57        STA $57
9f21: 85 58        STA $58
9f23: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Set cursor for class selection screen
9f26: a6 67        LDX $67
9f28: bd 0e 03     LDA $030e,X
9f2b: 85 40        STA $40
9f2d: bd 0f 03     LDA $030f,X
9f30: 85 41        STA $41
9f32: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Draw cursor at ($64*16+32, $65*16+80) (for name screen)
9f35: a5 64        LDA $64
9f37: 0a           ASL
9f38: 0a           ASL
9f39: 0a           ASL
9f3a: 0a           ASL
9f3b: 18           CLC
9f3c: 69 20        ADC #$20
9f3e: 85 40        STA $40
9f40: a5 65        LDA $65
9f42: 0a           ASL
9f43: 0a           ASL
9f44: 0a           ASL
9f45: 0a           ASL
9f46: 18           CLC
9f47: 69 50        ADC #$50
9f49: 85 41        STA $41
9f4b: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Setup sprites for the 4 warriors
9f4e: a2 00        LDX #$00
9f50: 20 5f 9f     JSR $9f5f
9f53: a2 10        LDX #$10
9f55: 20 5f 9f     JSR $9f5f
9f58: a2 20        LDX #$20
9f5a: 20 5f 9f     JSR $9f5f
9f5d: a2 30        LDX #$30
9f5f: bd 0a 03     LDA $030a,X
9f62: 85 40        STA $40
9f64: bd 0b 03     LDA $030b,X
9f67: 85 41        STA $41
9f69: bd 00 03     LDA $0300,X
9f6c: aa           TAX
9f6d: bd a4 ec     LDA $eca4,X ; character battle palette selection
9f70: 85 11        STA $11
9f72: 8a           TXA
9f73: 0a           ASL
9f74: 0a           ASL
9f75: 0a           ASL
9f76: 0a           ASL
9f77: 0a           ASL
9f78: 85 10        STA $10
9f7a: 4c 24 ec     JMP $ec24   ; Setup 2x3 sprite at ($40,$41) with tiles $10 to $10+5 and flags $11

; Draw name for warrior in $67 for name screen
9f7d: a6 67        LDX $67
9f7f: bd 02 03     LDA $0302,X
9f82: 85 5c        STA $5c
9f84: bd 03 03     LDA $0303,X
9f87: 85 5d        STA $5d
9f89: bd 04 03     LDA $0304,X
9f8c: 85 5e        STA $5e
9f8e: bd 05 03     LDA $0305,X
9f91: 85 5f        STA $5f
9f93: a9 00        LDA #$00
9f95: 85 3f        STA $3f
9f97: a9 5c        LDA #$5c
9f99: 85 3e        STA $3e
9f9b: a9 0e        LDA #$0e
9f9d: 85 57        STA $57
9f9f: 85 58        STA $58
9fa1: a9 0e        LDA #$0e
9fa3: 85 3a        STA $3a
9fa5: a9 04        LDA #$04
9fa7: 85 3b        STA $3b
9fa9: a9 01        LDA #$01
9fab: 85 37        STA $37
9fad: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Draw name screen
9fb0: ad 02 20     LDA $2002
9fb3: a9 23        LDA #$23
9fb5: 8d 06 20     STA $2006
9fb8: a9 c0        LDA #$c0
9fba: 8d 06 20     STA $2006
9fbd: a9 00        LDA #$00
9fbf: a2 10        LDX #$10
9fc1: 8d 07 20     STA $2007
9fc4: ca           DEX
9fc5: d0 fa        BNE +$fa  [$9fc1]
9fc7: a9 00        LDA #$00    ;; Box for letters
9fc9: 85 37        STA $37
9fcb: a9 04        LDA #$04
9fcd: 85 38        STA $38
9fcf: a9 08        LDA #$08
9fd1: 85 39        STA $39
9fd3: a9 17        LDA #$17
9fd5: 85 3c        STA $3c
9fd7: a9 14        LDA #$14
9fd9: 85 3d        STA $3d
9fdb: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
9fde: a9 0d        LDA #$0d    ;; Box for name
9fe0: 85 38        STA $38
9fe2: a9 02        LDA #$02
9fe4: 85 39        STA $39
9fe6: a9 06        LDA #$06
9fe8: 85 3c        STA $3c
9fea: a9 04        LDA #$04
9fec: 85 3d        STA $3d
9fee: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
9ff1: a9 11        LDA #$11    ;; Draw name screen letter string
9ff3: 85 3e        STA $3e
9ff5: a9 a0        LDA #$a0
9ff7: 85 3f        STA $3f
9ff9: a9 06        LDA #$06
9ffb: 85 3a        STA $3a
9ffd: a9 0a        LDA #$0a
9fff: 85 3b        STA $3b
a001: a9 0e        LDA #$0e
a003: 85 57        STA $57
a005: 85 58        STA $58
a007: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Offset/2 of each row in the name string
; (used to calculate the position of the letter byte)
a00a: 00 0a 14 1e 28 32 3c

; Name screen string
a011: 8a ff 8b ff 8c ff 8d ff 8e ff 8f ff 90 ff 91 ff 92 ff 93 01  ; A B C D E F G H I J\\
a025: 94 ff 95 ff 96 ff 97 ff 98 ff 99 ff 9a ff 9b ff 9c ff 9d 01  ; K L M N O P Q R S T\\
a039: 9e ff 9f ff a0 ff a1 ff a2 ff a3 ff be ff bf ff c0 ff ff 01  ; U V W X Y Z ' , .  \\
a04d: 80 ff 81 ff 82 ff 83 ff 84 ff 85 ff 86 ff 87 ff 88 ff 89 01  ; 0 1 2 3 4 5 6 7 8 9\\
a061: a4 ff a5 ff a6 ff a7 ff a8 ff a9 ff aa ff ab ff ac ff ad 01  ; a b c d e f g h i j\\
a075: ae ff af ff b0 ff b1 ff b2 ff b3 ff b4 ff b5 ff b6 ff b7 01  ; k l m n o p q r s t\\
a089: b8 ff b9 ff ba ff bb ff bc ff bd ff c2 ff c3 ff c4 ff c5 01  ; u v w x y z - .. ! ?\\
a09d: 01                                                           ; \\
a09e: ff ff ff 9c 8e 95 8e 8c 9d ff ff 97 8a 96 8e 00              ; "   SELECT  NAME"

; Information for class screen setup
;     Class             Name pos    Sprite pos  Cursor pos
;           Name              Class pos   Win pos
a0ae: 00 00 ff ff ff ff 07 0c 05 06 40 40 04 04 30 40
a0be: 01 00 ff ff ff ff 15 0c 13 06 b0 40 12 04 a0 40
a0ce: 02 00 ff ff ff ff 07 18 05 12 40 a0 04 10 30 a0
a0de: 03 00 ff ff ff ff 15 18 13 12 b0 a0 12 10 a0 a0

; DO INTRO TEXT!
a0ee: 20 19 a2     JSR $a219   ; Load menu screen tiles and palettes, disp off, clear screen
a0f1: ad 02 20     LDA $2002   ; clear v-blank flag
a0f4: a9 20        LDA #$20
a0f6: 8d 06 20     STA $2006   ; write name table
a0f9: a9 00        LDA #$00
a0fb: 8d 06 20     STA $2006
a0fe: a2 f0        LDX #$f0    ; clear screen to tile FF palette 01
a100: a9 ff        LDA #$ff
a102: 8d 07 20     STA $2007
a105: 8d 07 20     STA $2007
a108: 8d 07 20     STA $2007
a10b: 8d 07 20     STA $2007
a10e: ca           DEX
a10f: d0 f1        BNE +$f1  [$a102]
a111: a2 40        LDX #$40
a113: a9 55        LDA #$55
a115: 8d 07 20     STA $2007
a118: ca           DEX
a119: d0 fa        BNE +$fa  [$a115]
a11b: a9 01        LDA #$01    ; palettes 1 and 2 mostly blue
a11d: 8d c6 03     STA $03c6
a120: 8d c7 03     STA $03c7
a123: 8d ca 03     STA $03ca
a126: 8d cb 03     STA $03cb
a129: a9 20        LDA #$20   ;; output intro text
a12b: 85 3e        STA $3e
a12d: a9 bf        LDA #$bf
a12f: 85 3f        STA $3f
a131: a9 00        LDA #$00
a133: 85 37        STA $37
a135: a9 0d        LDA #$0d
a137: 85 57        STA $57
a139: a9 0e        LDA #$0e
a13b: 85 58        STA $58
a13d: a9 03        LDA #$03
a13f: 85 3b        STA $3b
a141: a9 01        LDA #$01
a143: 85 3a        STA $3a
a145: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
a148: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
a14b: 20 74 a2     JSR $a274   ; Fade in intro text
a14e: a9 00        LDA #$00
a150: 8d 15 40     STA $4015
a153: 85 fa        STA $fa
a155: 60           RTS

; NEW GAME/CONTINUE menu: returns respond rate in $fa and C set if New
a156: 20 80 84     JSR $8480   ; Display 'copyright' lines on title screen
a159: a9 0e        LDA #$0e
a15b: 85 57        STA $57
a15d: 85 58        STA $58
a15f: a9 0b        LDA #$0b
a161: 85 38        STA $38
a163: a9 0a        LDA #$0a
a165: 85 39        STA $39
a167: a9 04        LDA #$04
a169: 85 3d        STA $3d
a16b: a9 0a        LDA #$0a
a16d: 85 3c        STA $3c
a16f: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
a172: a9 53        LDA #$53    ;; CONTINUE
a174: 85 3e        STA $3e
a176: a9 a2        LDA #$a2
a178: 85 3f        STA $3f
a17a: a9 00        LDA #$00
a17c: 85 37        STA $37
a17e: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
a181: a9 0f        LDA #$0f
a183: 85 39        STA $39
a185: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
a188: a9 5c        LDA #$5c    ;; NEW GAME
a18a: 85 3e        STA $3e
a18c: a9 a2        LDA #$a2
a18e: 85 3f        STA $3f
a190: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
a193: a9 14        LDA #$14
a195: 85 39        STA $39
a197: a9 08        LDA #$08
a199: 85 38        STA $38
a19b: a9 10        LDA #$10
a19d: 85 3c        STA $3c
a19f: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
a1a2: a9 65        LDA #$65    ;; RESPOND RATE
a1a4: 85 3e        STA $3e
a1a6: a9 a2        LDA #$a2
a1a8: 85 3f        STA $3f
a1aa: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
a1ad: a9 0f        LDA #$0f
a1af: 8d 15 40     STA $4015
a1b2: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
a1b5: 20 3c c4     JSR $c43c   ; Clear sprites
a1b8: a6 62        LDX $62
a1ba: a9 48        LDA #$48
a1bc: 85 40        STA $40
a1be: bd 72 a2     LDA $a272,X
a1c1: 85 41        STA $41
a1c3: 20 95 ec     JSR $ec95   ; Setup cursor(?) at ($40,$41)
a1c6: 20 00 fe     JSR $fe00   ; wait for V-blank
a1c9: a9 02        LDA #$02    ; upload sprites
a1cb: 8d 14 40     STA $4014
a1ce: 20 38 a2     JSR $a238   ; Output respond rate
a1d1: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
a1d4: a9 0e        LDA #$0e
a1d6: 85 57        STA $57
a1d8: 20 dc 84     JSR $84dc   ; Do something sound-related? and load $24
a1db: 05 23        ORA $23
a1dd: d0 35        BNE +$35  [$a214]  ; branch if A/Start pressed
a1df: a5 20        LDA $20
a1e1: 29 0f        AND #$0f    ; if same directions still pressed, do nothing
a1e3: c5 61        CMP $61
a1e5: f0 ce        BEQ +$ce  [$a1b5]
a1e7: 85 61        STA $61
a1e9: c9 00        CMP #$00
a1eb: f0 c8        BEQ +$c8  [$a1b5]
a1ed: c9 04        CMP #$04
a1ef: 90 0c        BCC +$0c  [$a1fd]
a1f1: a5 62        LDA $62     ;; Up/Down? change new/continte
a1f3: 49 01        EOR #$01
a1f5: 85 62        STA $62
a1f7: 20 84 ad     JSR $ad84   ; Sound stuff (menu move bleep?)
a1fa: 4c b5 a1     JMP $a1b5
a1fd: c9 01        CMP #$01    ; Left/Right? change respond rate
a1ff: d0 04        BNE +$04  [$a205]
a201: a9 01        LDA #$01
a203: d0 02        BNE +$02  [$a207]
a205: a9 ff        LDA #$ff
a207: 18           CLC
a208: 65 fa        ADC $fa
a20a: 29 07        AND #$07
a20c: 85 fa        STA $fa
a20e: 20 9d ad     JSR $ad9d   ; Sound stuff (menu change bleep?)
a211: 4c b5 a1     JMP $a1b5
a214: a5 62        LDA $62
a216: c9 01        CMP #$01
a218: 60           RTS

; Load menu screen tiles and palettes, disp off, clear screen
a219: a9 08        LDA #$08
a21b: 85 ff        STA $ff
a21d: a9 00        LDA #$00
a21f: 8d 01 20     STA $2001  ; turn off sprites/BG
a222: 20 06 e9     JSR $e906   ; Load menu screen tiles and palettes
a225: a9 41        LDA #$41
a227: 85 4b        STA $4b
a229: a9 00        LDA #$00
a22b: 85 24        STA $24
a22d: 85 25        STA $25
a22f: 85 23        STA $23
a231: 85 62        STA $62
a233: 85 61        STA $61
a235: 4c 02 9c     JMP $9c02   ; clear screen (tile 0 pal 3)

; Output respond rate
a238: a9 22        LDA #$22
a23a: 8d 06 20     STA $2006
a23d: a9 d6        LDA #$d6
a23f: 8d 06 20     STA $2006
a242: a5 fa        LDA $fa
a244: 18           CLC
a245: 69 81        ADC #$81
a247: 8d 07 20     STA $2007
a24a: a9 00        LDA #$00
a24c: 8d 05 20     STA $2005
a24f: 8d 05 20     STA $2005
a252: 60           RTS

a253: 8c 98 97 9d 92 97 9e 8e 00                             ; CONTINUE
a25c: 97 8e a0 ff 90 8a 96 8e 00                             ; NEW GAME
a265: 9b 8e 9c 99 98 97 8d ff 9b 8a 9d 8e 00                 ; RESPOND RATE
a272: 58 80

; Fade in intro text
a274: a9 c0        LDA #$c0
a276: 85 62        STA $62
a278: 20 8c a2     JSR $a28c   ; Fade in 2-rows $62
a27b: a5 62        LDA $62
a27d: 18           CLC
a27e: 69 08        ADC #$08
a280: 85 62        STA $62
a282: c9 f8        CMP #$f8
a284: 90 f2        BCC +$f2  [$a278]
a286: 20 f2 a2     JSR $a2f2   ; Set row colors, wait a frame, check buttons
a289: 4c 86 a2     JMP $a286   ; wait for Start to be pressed

; Fade in 2-rows $62
a28c: a9 5a        LDA #$5a
a28e: 85 63        STA $63
a290: 20 a7 a2     JSR $a2a7   ; Fade in row $62/$63
a293: a5 62        LDA $62
a295: c9 f8        CMP #$f8
a297: f0 07        BEQ +$07  [$a2a0]
a299: a9 af        LDA #$af
a29b: 85 63        STA $63
a29d: 20 a7 a2     JSR $a2a7   ; Fade in row $62/$63
a2a0: a9 ff        LDA #$ff
a2a2: 85 63        STA $63
a2a4: 4c f2 a2     JMP $a2f2   ; Set row colors, wait a frame, check buttons

; Fade in row $62/$63
a2a7: a9 00        LDA #$00
a2a9: 85 64        STA $64
a2ab: a5 64        LDA $64
a2ad: 8d cb 03     STA $03cb
a2b0: 20 f2 a2     JSR $a2f2   ; Set row colors, wait a frame, check buttons
a2b3: e6 f0        INC $f0
a2b5: a5 f0        LDA $f0
a2b7: 29 0f        AND #$0f
a2b9: d0 0c        BNE +$0c  [$a2c7]
a2bb: a5 64        LDA $64
a2bd: 18           CLC
a2be: 69 10        ADC #$10
a2c0: 85 64        STA $64
a2c2: c9 40        CMP #$40
a2c4: 90 e5        BCC +$e5  [$a2ab]
a2c6: 60           RTS
a2c7: 4a           LSR
a2c8: 90 e1        BCC +$e1  [$a2ab]
a2ca: ad cb 03     LDA $03cb
a2cd: 38           SEC
a2ce: e9 10        SBC #$10
a2d0: 10 02        BPL +$02  [$a2d4]
a2d2: a9 01        LDA #$01
a2d4: 8d cb 03     STA $03cb
a2d7: 4c b0 a2     JMP $a2b0

; Set 2-rows referenced by $62 to palettes in $63
a2da: ad 02 20     LDA $2002  ; clear v-blank flag
a2dd: a9 23        LDA #$23
a2df: 8d 06 20     STA $2006
a2e2: a5 62        LDA $62
a2e4: 8d 06 20     STA $2006
a2e7: a2 08        LDX #$08
a2e9: a5 63        LDA $63
a2eb: 8d 07 20     STA $2007
a2ee: ca           DEX
a2ef: d0 fa        BNE +$fa  [$a2eb]
a2f1: 60           RTS

; Set row colors, wait a frame, check buttons
a2f2: 20 00 fe     JSR $fe00   ; wait for V-blank
a2f5: 20 da a2     JSR $a2da   ; Set 2-rows referenced by $62 to palettes in $63
a2f8: 20 50 d8     JSR $d850   ; Upload palettes: BG at $03c0, sprite at $03d0
a2fb: a5 ff        LDA $ff     ; display on
a2fd: 8d 00 20     STA $2000
a300: a9 00        LDA #$00
a302: 8d 05 20     STA $2005
a305: 8d 05 20     STA $2005
a308: 85 24        STA $24
a30a: 85 25        STA $25
a30c: a9 0e        LDA #$0e
a30e: 85 57        STA $57
a310: 20 89 c6     JSR $c689   ; Start music or play current notes
a313: 20 ca 84     JSR $84ca   ; Reset the game on start (will skip intro though)
a316: a5 24        LDA $24     ; A or B pressed, speed up intro
a318: 05 25        ORA $25
a31a: d0 01        BNE +$01  [$a31d]
a31c: 60           RTS
a31d: 68           PLA
a31e: 68           PLA
a31f: 60           RTS

; Shop handling routine pointers
a320: b4 a3        .DW $a3b4  ; weapon
a322: b4 a3        .DW $a3b4  ; armor
a324: 60 a3        .DW $a360  ; white magic
a326: 60 a3        .DW $a360  ; black magic
a328: a2 a5        .DW $a5a2  ; clinic
a32a: 08 a5        .DW $a508  ; inn
a32c: 7c a4        .DW $a47c  ; item
a32e: 7a a4        .DW $a47a  ; caravan

a330: a9 00        LDA #$00
a332: 8d 01 20     STA $2001
a335: 8d 15 40     STA $4015
a338: 85 25        STA $25
a33a: 85 24        STA $24
a33c: 20 0c e9     JSR $e90c   ; Load shop tiles, font, palettes, type ($66) and battle sprites
a33f: 20 78 a7     JSR $a778   ; Load shop wares and draw screen (shop in $51, type in $66)
a342: a5 66        LDA $66
a344: 0a           ASL
a345: aa           TAX
a346: bd 20 a3     LDA $a320,X ; Load shop handling routine pointer
a349: 85 10        STA $10
a34b: bd 21 a3     LDA $a321,X
a34e: 85 11        STA $11
a350: a9 4f        LDA #$4f    ; Start shop music
a352: 85 4b        STA $4b
a354: 6c 10 00     JMP ($0010) ; Go to routine

a357: 60           RTS

a358: a9 25        LDA #$25
a35a: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a35d: 4c 65 a3     JMP $a365

; MAGIC SHOP
a360: a9 17        LDA #$17
a362: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a365: 20 e4 a8     JSR $a8e4   ; Do "select warrior" menu: which in $62, A/B flag in C
a368: b0 ed        BCS +$ed  [$a357]
a36a: a5 62        LDA $62
a36c: 6a           ROR
a36d: 6a           ROR
a36e: 6a           ROR
a36f: 29 c0        AND #$c0
a371: 8d 0a 03     STA $030a
a374: 20 89 a9     JSR $a989
a377: b0 ec        BCS +$ec  [$a365]
a379: a6 62        LDX $62
a37b: bd 00 03     LDA $0300,X
a37e: 8d 0c 03     STA $030c
a381: 20 df aa     JSR $aadf
a384: 20 65 aa     JSR $aa65   ; Draw "X Gold OK?", $030c = item number, $10-$12 = $030e-f = price
a387: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a38a: b0 cc        BCS +$cc  [$a358]
a38c: a5 62        LDA $62
a38e: d0 c8        BNE +$c8  [$a358]
a390: 20 eb a4     JSR $a4eb   ; Gold >= $030e-f? C clear if so
a393: 90 08        BCC +$08  [$a39d]
a395: a9 10        LDA #$10
a397: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a39a: 4c 65 a3     JMP $a365
a39d: 20 cd a4     JSR $a4cd   ; Gold -= $030e-f and draw it
a3a0: ae 0a 03     LDX $030a
a3a3: ad 0b 03     LDA $030b
a3a6: 9d 00 63     STA $6300,X
a3a9: 4c 60 a3     JMP $a360

; weapon/armor "Too bad, something else?"
a3ac: a9 25        LDA #$25
a3ae: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a3b1: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT

; WEAPON/ARMOR SHOP
a3b4: a9 09        LDA #$09
a3b6: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Welcome")
a3b9: 20 d3 a8     JSR $a8d3   ; Do BUY/SELL/EXIT menu; which in $62, A/B flag in C
a3bc: b0 08        BCS +$08  [$a3c6]  ; B pressed = exit
a3be: a5 62        LDA $62
a3c0: f0 05        BEQ +$05  [$a3c7]  ; item 0 = buy
a3c2: c9 01        CMP #$01
a3c4: f0 4f        BEQ +$4f  [$a415]  ; item 1 = sell
a3c6: 60           RTS                ; item 2 = exit
a3c7: 20 d1 a7     JSR $a7d1   ; BUY: Load shop wares (shop in $51)
a3ca: a9 0d        LDA #$0d
a3cc: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("What do you want?")
a3cf: 20 57 a8     JSR $a857   ; Draw wares menu and get selection: item in $62, A/B flag in C
a3d2: b0 e5        BCS +$e5  [$a3b9] ; B = back to BUY/SELL/EXIT menu
a3d4: 20 65 aa     JSR $aa65   ; Draw "X Gold OK?", $030c = item number, $10-$12 = $030e-f = price
a3d7: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a3da: b0 d0        BCS +$d0  [$a3ac]  ; B = NO, "too bad, something else?"
a3dc: a5 62        LDA $62
a3de: d0 cc        BNE +$cc  [$a3ac]  ; No = "too bad, something else?"
a3e0: 20 eb a4     JSR $a4eb   ; Gold >= $030e-f? C clear if so
a3e3: 90 08        BCC +$08  [$a3ed]
a3e5: a9 10        LDA #$10
a3e7: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("You can't afford that")
a3ea: 4c b9 a3     JMP $a3b9   ; Go BUY/SELL/EXIT
a3ed: a9 11        LDA #$11
a3ef: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Who will take it?")
a3f2: 20 e4 a8     JSR $a8e4   ; Do "select warrior" menu: which in $62, A/B flag in C
a3f5: b0 c2        BCS +$c2  [$a3b9]  ; B = cancel, go BUY/SELL/EXIT
a3f7: 20 1d a6     JSR $a61d   ; Give Warrior in $62 the weapon/armor (which in $66) in $030c, C set if no room
a3fa: 90 08        BCC +$08  [$a404]
a3fc: a9 0c        LDA #$0c
a3fe: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("You can't carry anymore")
a401: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT
a404: 20 cd a4     JSR $a4cd   ; Gold -= $030e-f and draw it
a407: a9 13        LDA #$13
a409: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Thank you! What else?")
a40c: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT
a40f: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT
a412: 4c ac a3     JMP $a3ac   ; "too bad, something else" and BUY/SELL/EXIT
a415: a9 14        LDA #$14    ;; SELL:
a417: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Whose item do you want to sell?")
a41a: 20 e4 a8     JSR $a8e4   ; Do "select warrior" menu: which in $62, A/B flag in C
a41d: b0 f0        BCS +$f0  [$a40f]  ; B = BUY/SELL/EXIT
a41f: 20 06 a8     JSR $a806   ; load saleables for warrior $62, and set C if none
a422: 90 08        BCC +$08  [$a42c]
a424: a9 1e        LDA #$1e
a426: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("You have nothing to sell")
a429: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT
a42c: 20 57 a8     JSR $a857   ; Draw wares menu and get selection: item in $62, A/B flag in C
a42f: b0 de        BCS +$de  [$a40f]  ; B = BUY/SELL/EXIT
a431: 20 b4 aa     JSR $aab4   ; Output "<sell price> Gold OK?", $030e-f = sell price
a434: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a437: b0 d9        BCS +$d9  [$a412]  ; B = "too bad, something else"
a439: a5 62        LDA $62
a43b: d0 d5        BNE +$d5  [$a412]  ; NO = "too bad, something else"
a43d: a5 66        LDA $66
a43f: 48           PHA
a440: 0a           ASL
a441: 0a           ASL
a442: 09 18        ORA #$18
a444: 85 66        STA $66
a446: 20 92 ed     JSR $ed92   ; Clear weapon/armor stats (which in $66) for all warriors, and ret to bank 14
a449: ae 0a 03     LDX $030a   ; Remove the sold item
a44c: a9 00        LDA #$00
a44e: 9d 00 61     STA $6100,X
a451: 20 fc ef     JSR $effc   ; Move all weapons/armors to the start of their 4-bytes (which in $66)
a454: 20 1b ee     JSR $ee1b   ; Apply weapon/armor equips (which in $66)
a457: 68           PLA
a458: 85 66        STA $66
a45a: ad 0e 03     LDA $030e
a45d: 85 10        STA $10
a45f: ad 0f 03     LDA $030f
a462: 85 11        STA $11
a464: a9 00        LDA #$00
a466: 85 12        STA $12
a468: 20 ea dd     JSR $ddea   ; Add 3-byte word in $10-12 into gold
a46b: 20 ef a7     JSR $a7ef   ; Draw gold
a46e: 4c b9 a3     JMP $a3b9   ; go BUY/SELL/EXIT

a471: 60           RTS

; item shop "Too bad, something else?"
a472: a9 25        LDA #$25
a474: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a477: 4c 81 a4     JMP $a481   ; go BUY/EXIT (?)

; CARAVAN
a47a: d0 00        BNE +$00  [$a47c]

; ITEM SHOP
a47c: a9 09        LDA #$09
a47e: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Welcome")
a481: 20 b1 a8     JSR $a8b1   ; Do BUY/EXIT menu: which in $62, A/B flag in C
a484: b0 eb        BCS +$eb  [$a471]  ; B = return
a486: a5 62        LDA $62
a488: d0 e7        BNE +$e7  [$a471]  ; Exit = return
a48a: a9 0d        LDA #$0d
a48c: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("What do you want?")
a48f: 20 57 a8     JSR $a857   ; Draw wares menu and get selection: item in $62, A/B flag in C
a492: b0 ed        BCS +$ed  [$a481]  ; B = BUY/EXIT
a494: 20 65 aa     JSR $aa65   ; Draw "X Gold OK?", $030c = item number, $10-$12 = $030e-f = price
a497: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a49a: b0 d6        BCS +$d6  [$a472]  ; B = "too bad, something else"
a49c: a5 62        LDA $62
a49e: d0 d2        BNE +$d2  [$a472]  ; NO = "too bad, something else"
a4a0: 20 eb a4     JSR $a4eb   ; Gold >= $030e-f? C clear if so
a4a3: 90 08        BCC +$08  [$a4ad]
a4a5: a9 10        LDA #$10
a4a7: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("You can't afford that")
a4aa: 4c 81 a4     JMP $a481   ; BUY/EXIT
a4ad: ae 0c 03     LDX $030c
a4b0: bd 20 60     LDA $6020,X
a4b3: c9 63        CMP #$63
a4b5: 90 08        BCC +$08  [$a4bf]
a4b7: a9 0c        LDA #$0c
a4b9: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("You can't carry anymore")
a4bc: 4c 81 a4     JMP $a481   ; BUY/EXIT
a4bf: fe 20 60     INC $6020,X ; Add one item
a4c2: 20 cd a4     JSR $a4cd   ; Gold -= $030e-f and draw it
a4c5: a9 13        LDA #$13
a4c7: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Thank you! What else?")
a4ca: 4c 81 a4     JMP $a481   ; BUY/EXIT

; Gold -= $030e-f and draw it
a4cd: ad 1c 60     LDA $601c
a4d0: 38           SEC
a4d1: ed 0e 03     SBC $030e
a4d4: 8d 1c 60     STA $601c
a4d7: ad 1d 60     LDA $601d
a4da: ed 0f 03     SBC $030f
a4dd: 8d 1d 60     STA $601d
a4e0: ad 1e 60     LDA $601e
a4e3: e9 00        SBC #$00
a4e5: 8d 1e 60     STA $601e
a4e8: 4c ef a7     JMP $a7ef   ; Draw gold

; Gold >= $030e-f? C clear if so
a4eb: ad 1e 60     LDA $601e
a4ee: d0 16        BNE +$16  [$a506]
a4f0: ad 1d 60     LDA $601d
a4f3: cd 0f 03     CMP $030f
a4f6: f0 04        BEQ +$04  [$a4fc]
a4f8: 90 0a        BCC +$0a  [$a504]
a4fa: b0 0a        BCS +$0a  [$a506]
a4fc: ad 1c 60     LDA $601c
a4ff: cd 0e 03     CMP $030e
a502: b0 02        BCS +$02  [$a506]
a504: 38           SEC
a505: 60           RTS
a506: 18           CLC
a507: 60           RTS

; INN
a508: a9 1b        LDA #$1b
a50a: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a50d: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a510: b0 68        BCS +$68  [$a57a]
a512: a5 62        LDA $62
a514: d0 64        BNE +$64  [$a57a]
a516: 20 9b aa     JSR $aa9b   ; Output "<$0300-1> Gold OK?"
a519: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a51c: b0 5c        BCS +$5c  [$a57a]
a51e: a5 62        LDA $62
a520: d0 58        BNE +$58  [$a57a]
a522: 20 89 a6     JSR $a689
a525: a9 30        LDA #$30
a527: 8d 04 40     STA $4004
a52a: a9 7f        LDA #$7f
a52c: 8d 05 40     STA $4005
a52f: a9 00        LDA #$00
a531: 8d 06 40     STA $4006
a534: 8d 07 40     STA $4007
a537: 20 d2 ab     JSR $abd2
a53a: 20 f3 ab     JSR $abf3   ; Restore magic (Inn/house)
a53d: 20 69 ab     JSR $ab69   ; SAVE!
a540: a9 00        LDA #$00
a542: 85 24        STA $24
a544: 85 25        STA $25
a546: a9 1c        LDA #$1c
a548: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a54b: a9 03        LDA #$03
a54d: 20 41 aa     JSR $aa41   ; Load shop window location (in A)
a550: 20 46 e1     JSR $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
a553: 20 3c c4     JSR $c43c   ; Clear sprites
a556: 20 fa a9     JSR $a9fa   ; Draw warriors in shop
a559: 20 00 fe     JSR $fe00   ; wait for V-blank
a55c: a9 02        LDA #$02    ; upload sprites
a55e: 8d 14 40     STA $4014
a561: 20 90 ff     JSR $ff90
a564: 20 43 a7     JSR $a743
a567: a5 4b        LDA $4b
a569: c9 81        CMP #$81
a56b: d0 04        BNE +$04  [$a571]
a56d: a9 4f        LDA #$4f
a56f: 85 4b        STA $4b
a571: a5 24        LDA $24
a573: 05 25        ORA $25
a575: f0 ed        BEQ +$ed  [$a564]
a577: 20 a8 ff     JSR $ffa8
a57a: a9 03        LDA #$03
a57c: 20 41 aa     JSR $aa41   ; Load shop window location (in A)
a57f: 20 46 e1     JSR $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
a582: a9 1d        LDA #$1d
a584: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a587: a9 00        LDA #$00
a589: 85 24        STA $24
a58b: 85 25        STA $25
a58d: 20 43 a7     JSR $a743
a590: a5 4b        LDA $4b
a592: c9 81        CMP #$81
a594: d0 04        BNE +$04  [$a59a]
a596: a9 4f        LDA #$4f
a598: 85 4b        STA $4b
a59a: a5 24        LDA $24
a59c: 05 25        ORA $25
a59e: f0 ed        BEQ +$ed  [$a58d]
a5a0: 60           RTS
a5a1: 60           RTS

; CLINIC
a5a2: a9 00        LDA #$00
a5a4: 85 24        STA $24
a5a6: 85 25        STA $25
a5a8: 20 ed a6     JSR $a6ed
a5ab: 90 5b        BCC +$5b  [$a608]
a5ad: a9 20        LDA #$20
a5af: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a5b2: 20 d7 a6     JSR $a6d7
a5b5: a5 62        LDA $62
a5b7: 8d 0c 03     STA $030c
a5ba: b0 e5        BCS +$e5  [$a5a1]
a5bc: 20 9b aa     JSR $aa9b   ; Output "<$0300-1> Gold OK?"
a5bf: 20 c2 a8     JSR $a8c2   ; Do YES/NO menu: which in $62, A/B flag in C
a5c2: b0 de        BCS +$de  [$a5a2]
a5c4: a5 62        LDA $62
a5c6: d0 da        BNE +$da  [$a5a2]
a5c8: 20 89 a6     JSR $a689
a5cb: ad 0c 03     LDA $030c
a5ce: 18           CLC
a5cf: 6d 0c 03     ADC $030c
a5d2: 6d 0c 03     ADC $030c
a5d5: aa           TAX
a5d6: bd 10 03     LDA $0310,X
a5d9: 6a           ROR
a5da: 6a           ROR
a5db: 6a           ROR
a5dc: 29 c0        AND #$c0
a5de: aa           TAX
a5df: a9 00        LDA #$00
a5e1: 9d 01 61     STA $6101,X
a5e4: a9 01        LDA #$01
a5e6: 9d 0a 61     STA $610a,X
a5e9: a9 00        LDA #$00
a5eb: 85 24        STA $24
a5ed: 85 25        STA $25
a5ef: a9 21        LDA #$21
a5f1: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a5f4: a9 03        LDA #$03
a5f6: 20 41 aa     JSR $aa41   ; Load shop window location (in A)
a5f9: 20 46 e1     JSR $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
a5fc: 20 43 a7     JSR $a743
a5ff: a5 24        LDA $24
a601: 05 25        ORA $25
a603: f0 f7        BEQ +$f7  [$a5fc]
a605: 4c a2 a5     JMP $a5a2
a608: a9 23        LDA #$23
a60a: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a60d: a9 00        LDA #$00
a60f: 85 24        STA $24
a611: 85 25        STA $25
a613: 20 43 a7     JSR $a743
a616: a5 24        LDA $24
a618: 05 25        ORA $25
a61a: f0 f7        BEQ +$f7  [$a613]
a61c: 60           RTS

; Give Warrior in $62 the weapon/armor (which in $66) in $030c, C set if no room
a61d: a5 62        LDA $62
a61f: 6a           ROR
a620: 6a           ROR
a621: 6a           ROR
a622: 29 c0        AND #$c0
a624: 8d 0a 03     STA $030a
a627: a6 66        LDX $66
a629: d0 1e        BNE +$1e  [$a649]
a62b: a0 18        LDY #$18
a62d: ae 0a 03     LDX $030a
a630: bd 18 61     LDA $6118,X
a633: f0 32        BEQ +$32  [$a667]
a635: c8           INY
a636: bd 19 61     LDA $6119,X
a639: f0 2c        BEQ +$2c  [$a667]
a63b: c8           INY
a63c: bd 1a 61     LDA $611a,X
a63f: f0 26        BEQ +$26  [$a667]
a641: c8           INY
a642: bd 1b 61     LDA $611b,X
a645: f0 20        BEQ +$20  [$a667]
a647: 38           SEC
a648: 60           RTS
a649: a0 1c        LDY #$1c
a64b: ae 0a 03     LDX $030a
a64e: bd 1c 61     LDA $611c,X
a651: f0 25        BEQ +$25  [$a678]
a653: c8           INY
a654: bd 1d 61     LDA $611d,X
a657: f0 1f        BEQ +$1f  [$a678]
a659: c8           INY
a65a: bd 1e 61     LDA $611e,X
a65d: f0 19        BEQ +$19  [$a678]
a65f: c8           INY
a660: bd 1f 61     LDA $611f,X
a663: f0 13        BEQ +$13  [$a678]
a665: 38           SEC
a666: 60           RTS
a667: 98           TYA
a668: 18           CLC
a669: 6d 0a 03     ADC $030a
a66c: aa           TAX
a66d: ad 0c 03     LDA $030c
a670: 38           SEC
a671: e9 1b        SBC #$1b
a673: 9d 00 61     STA $6100,X
a676: 18           CLC
a677: 60           RTS

a678: 98           TYA
a679: 18           CLC
a67a: 6d 0a 03     ADC $030a
a67d: aa           TAX
a67e: ad 0c 03     LDA $030c
a681: 38           SEC
a682: e9 43        SBC #$43
a684: 9d 00 61     STA $6100,X
a687: 18           CLC
a688: 60           RTS
a689: ad 1e 60     LDA $601e
a68c: d0 2b        BNE +$2b  [$a6b9]
a68e: ad 1d 60     LDA $601d
a691: cd 01 03     CMP $0301
a694: f0 04        BEQ +$04  [$a69a]
a696: b0 21        BCS +$21  [$a6b9]
a698: 90 08        BCC +$08  [$a6a2]
a69a: ad 1c 60     LDA $601c
a69d: cd 00 03     CMP $0300
a6a0: b0 17        BCS +$17  [$a6b9]
a6a2: a9 10        LDA #$10
a6a4: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
a6a7: a9 00        LDA #$00
a6a9: 85 24        STA $24
a6ab: 85 25        STA $25
a6ad: 20 43 a7     JSR $a743
a6b0: a5 24        LDA $24
a6b2: 05 25        ORA $25
a6b4: f0 f7        BEQ +$f7  [$a6ad]
a6b6: 68           PLA
a6b7: 68           PLA
a6b8: 60           RTS
a6b9: ad 1c 60     LDA $601c
a6bc: 38           SEC
a6bd: ed 00 03     SBC $0300
a6c0: 8d 1c 60     STA $601c
a6c3: ad 1d 60     LDA $601d
a6c6: ed 01 03     SBC $0301
a6c9: 8d 1d 60     STA $601d
a6cc: ad 1e 60     LDA $601e
a6cf: e9 00        SBC #$00
a6d1: 8d 1e 60     STA $601e
a6d4: 4c ef a7     JMP $a7ef   ; Draw gold
a6d7: a9 03        LDA #$03
a6d9: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
a6dc: 20 ed a6     JSR $a6ed
a6df: a9 10        LDA #$10
a6e1: 85 3e        STA $3e
a6e3: a9 03        LDA #$03
a6e5: 85 3f        STA $3f
a6e7: 20 32 aa     JSR $aa32   ; Output string at p[$3e] to ($3a,$3b)
a6ea: 4c 07 a9     JMP $a907   ; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected
a6ed: a0 00        LDY #$00
a6ef: a2 00        LDX #$00
a6f1: 86 63        STX $63
a6f3: bd 01 61     LDA $6101,X
a6f6: c9 01        CMP #$01
a6f8: d0 1c        BNE +$1c  [$a716]
a6fa: 8a           TXA
a6fb: 2a           ROL
a6fc: 2a           ROL
a6fd: 2a           ROL
a6fe: 29 03        AND #$03
a700: 69 10        ADC #$10
a702: 99 10 03     STA $0310,Y
a705: a9 00        LDA #$00
a707: 99 11 03     STA $0311,Y
a70a: a9 01        LDA #$01
a70c: 99 12 03     STA $0312,Y
a70f: 98           TYA
a710: 18           CLC
a711: 69 03        ADC #$03
a713: a8           TAY
a714: e6 63        INC $63
a716: 8a           TXA
a717: 18           CLC
a718: 69 40        ADC #$40
a71a: aa           TAX
a71b: d0 d6        BNE +$d6  [$a6f3]
a71d: a9 00        LDA #$00
a71f: 99 10 03     STA $0310,Y
a722: a5 63        LDA $63
a724: c9 01        CMP #$01
a726: 60           RTS

; Draw warriors in shop, cursor, V-Blank, sound, buttons
a727: 20 3c c4     JSR $c43c   ; Clear sprites
a72a: 20 fa a9     JSR $a9fa   ; Draw warriors in shop
a72d: 20 ef a9     JSR $a9ef   ; Setup cursor at ($64,$65)
a730: 20 00 fe     JSR $fe00   ; wait for V-blank
a733: a9 02        LDA #$02    ; upload sprites
a735: 8d 14 40     STA $4014
a738: a9 0e        LDA #$0e
a73a: 85 57        STA $57
a73c: 20 89 c6     JSR $c689   ; Start music or play current notes
a73f: 4c 58 a7     JMP $a758   ; Get buttons and do bleeps

a742: 60           RTS

a743: 20 3c c4     JSR $c43c   ; Clear sprites
a746: 20 fa a9     JSR $a9fa   ; Draw warriors in shop
a749: 20 00 fe     JSR $fe00   ; wait for V-blank
a74c: a9 02        LDA #$02    ; upload sprites
a74e: 8d 14 40     STA $4014
a751: a9 0e        LDA #$0e
a753: 85 57        STA $57
a755: 20 89 c6     JSR $c689   ; Start music or play current notes
; Get buttons and do bleeps
a758: a5 20        LDA $20
a75a: 29 0f        AND #$0f
a75c: 85 17        STA $17
a75e: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
a761: a5 24        LDA $24
a763: 05 25        ORA $25
a765: f0 03        BEQ +$03  [$a76a]
a767: 4c 84 ad     JMP $ad84   ; Sound stuff (menu move bleep?)
a76a: a5 20        LDA $20
a76c: 29 0f        AND #$0f
a76e: f0 07        BEQ +$07  [$a777]
a770: c5 17        CMP $17
a772: f0 03        BEQ +$03  [$a777]
a774: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
a777: 60           RTS

; Load shop wares and draw screen (shop in $51, type in $66)
a778: 20 d1 a7     JSR $a7d1   ; Load shop wares (shop in $51)
a77b: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
a77e: ad 02 20     LDA $2002   ; clear v-blank flag
a781: a9 23        LDA #$23    ; Load shop palette map
a783: 8d 06 20     STA $2006
a786: a9 c0        LDA #$c0
a788: 8d 06 20     STA $2006
a78b: a2 00        LDX #$00
a78d: bd 5c ac     LDA $ac5c,X
a790: 8d 07 20     STA $2007
a793: e8           INX
a794: e0 40        CPX #$40
a796: 90 f5        BCC +$f5  [$a78d]
a798: a6 66        LDX $66
a79a: bd 54 ac     LDA $ac54,X  ; Load shop screen
a79d: 85 12        STA $12
a79f: a9 06        LDA #$06
a7a1: 85 3b        STA $3b
a7a3: a9 0b        LDA #$0b
a7a5: 85 3a        STA $3a
a7a7: a9 0a        LDA #$0a
a7a9: 85 3c        STA $3c
a7ab: 85 3d        STA $3d
a7ad: a9 9c        LDA #$9c
a7af: 85 3e        STA $3e
a7b1: a9 ac        LDA #$ac
a7b3: 85 3f        STA $3f
a7b5: 20 bc dc     JSR $dcbc   ; Copy a $3c by $3d square from p[$3e] to VRAM at ($3a,$3b), adding $12 to all non-zero tiles
a7b8: a9 00        LDA #$00
a7ba: 85 37        STA $37
a7bc: a9 01        LDA #$01
a7be: 20 3b aa     JSR $aa3b   ; Draw shop window (shop name)
a7c1: a5 66        LDA $66
a7c3: 20 26 aa     JSR $aa26   ; Draw shop text
a7c6: 20 ef a7     JSR $a7ef   ; Draw gold
a7c9: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
a7cc: a9 01        LDA #$01
a7ce: 85 37        STA $37
a7d0: 60           RTS

; Load shop wares (shop in $51)
a7d1: a5 51        LDA $51
a7d3: 0a           ASL
a7d4: aa           TAX
a7d5: bd 00 83     LDA $8300,X
a7d8: 85 10        STA $10
a7da: bd 01 83     LDA $8301,X
a7dd: 85 11        STA $11
a7df: a0 04        LDY #$04
a7e1: b1 10        LDA ($10),Y
a7e3: 99 00 03     STA $0300,Y
a7e6: 88           DEY
a7e7: 10 f8        BPL +$f8  [$a7e1]
a7e9: a9 00        LDA #$00
a7eb: 8d 05 03     STA $0305
a7ee: 60           RTS

; Draw gold
a7ef: a9 04        LDA #$04
a7f1: 20 3b aa     JSR $aa3b   ; Draw shop window (gold window)
a7f4: 20 4a 8e     JSR $8e4a   ; p[$3e] = 6-digit party gold
a7f7: 20 32 aa     JSR $aa32   ; Output string at p[$3e] to ($3a,$3b)
a7fa: a5 3a        LDA $3a
a7fc: 18           CLC
a7fd: 69 06        ADC #$06
a7ff: 85 3a        STA $3a
a801: a9 08        LDA #$08    ; print the " G"
a803: 4c 26 aa     JMP $aa26   ; Draw shop text

; load saleables for warrior $62, and set C if none
a806: a9 00        LDA #$00    ;; Load what warrior $62 can sell
a808: a8           TAY
a809: a5 62        LDA $62
a80b: 6a           ROR
a80c: 6a           ROR
a80d: 6a           ROR
a80e: 29 c0        AND #$c0
a810: a6 66        LDX $66
a812: d0 27        BNE +$27  [$a83b]
a814: 18           CLC         ;; weapon shop
a815: 69 18        ADC #$18
a817: 8d 0a 03     STA $030a
a81a: aa           TAX
a81b: bd 00 61     LDA $6100,X
a81e: f0 0e        BEQ +$0e  [$a82e]
a820: 29 7f        AND #$7f
a822: 18           CLC
a823: 69 1b        ADC #$1b
a825: 99 00 03     STA $0300,Y
a828: c8           INY
a829: e8           INX
a82a: c0 04        CPY #$04
a82c: 90 ed        BCC +$ed  [$a81b]
a82e: c0 00        CPY #$00
a830: d0 02        BNE +$02  [$a834]
a832: 38           SEC
a833: 60           RTS
a834: a9 00        LDA #$00
a836: 99 00 03     STA $0300,Y
a839: 18           CLC
a83a: 60           RTS
a83b: 18           CLC         ;; armor shop (by default)
a83c: 69 1c        ADC #$1c
a83e: 8d 0a 03     STA $030a
a841: aa           TAX
a842: bd 00 61     LDA $6100,X
a845: f0 e7        BEQ +$e7  [$a82e]
a847: 29 7f        AND #$7f
a849: 18           CLC
a84a: 69 43        ADC #$43
a84c: 99 00 03     STA $0300,Y
a84f: c8           INY
a850: e8           INX
a851: c0 04        CPY #$04
a853: b0 d9        BCS +$d9  [$a82e]
a855: 90 eb        BCC +$eb  [$a842]

; Draw wares menu and get selection: item in $62, A/B flag in C
a857: a9 00        LDA #$00
a859: 85 63        STA $63
a85b: a0 00        LDY #$00
a85d: a6 63        LDX $63
a85f: bd 00 03     LDA $0300,X  ;; Setup string: "<name XX>\\  <price XX>" for all items
a862: f0 2d        BEQ +$2d  [$a891]
a864: 99 11 03     STA $0311,Y
a867: 99 16 03     STA $0316,Y
a86a: a9 02        LDA #$02
a86c: 99 10 03     STA $0310,Y
a86f: a9 03        LDA #$03
a871: 99 15 03     STA $0315,Y
a874: a9 01        LDA #$01
a876: 99 12 03     STA $0312,Y
a879: 99 17 03     STA $0317,Y
a87c: a9 ff        LDA #$ff
a87e: 99 13 03     STA $0313,Y
a881: 99 14 03     STA $0314,Y
a884: 98           TYA
a885: 18           CLC
a886: 69 08        ADC #$08
a888: a8           TAY
a889: e6 63        INC $63
a88b: a5 63        LDA $63
a88d: c9 05        CMP #$05
a88f: 90 cc        BCC +$cc  [$a85d]
a891: a9 00        LDA #$00    ; Null-terminate string
a893: 99 10 03     STA $0310,Y
a896: a9 02        LDA #$02
a898: 20 3b aa     JSR $aa3b   ; Draw shop window (in A) (Wares)
a89b: a9 10        LDA #$10
a89d: 85 3e        STA $3e
a89f: a9 03        LDA #$03
a8a1: 85 3f        STA $3f
a8a3: 20 32 aa     JSR $aa32   ; Output string at p[$3e] to ($3a,$3b)
a8a6: a9 03        LDA #$03
a8a8: 20 41 aa     JSR $aa41   ; Load shop window location (in A) (Menu)
a8ab: 20 46 e1     JSR $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
a8ae: 4c 12 a9     JMP $a912   ; Do shop wares menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

; Do BUY/EXIT menu: which in $62, A/B flag in C
a8b1: a9 03        LDA #$03
a8b3: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
a8b6: a9 0b        LDA #$0b
a8b8: 20 26 aa     JSR $aa26   ; Draw shop text ("BUY/EXIT")
a8bb: a9 02        LDA #$02
a8bd: 85 63        STA $63
a8bf: 4c 07 a9     JMP $a907   ; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

; Do YES/NO menu: which in $62, A/B flag in C
a8c2: a9 03        LDA #$03
a8c4: 20 3b aa     JSR $aa3b   ; Draw shop window (in A) (Menu)
a8c7: a9 0f        LDA #$0f
a8c9: 20 26 aa     JSR $aa26   ; Draw shop text ("Yes\\No")
a8cc: a9 02        LDA #$02
a8ce: 85 63        STA $63
a8d0: 4c 07 a9     JMP $a907   ; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

; Do BUY/SELL/EXIT menu; which in $62, A/B flag in C
a8d3: a9 03        LDA #$03
a8d5: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
a8d8: a9 0a        LDA #$0a
a8da: 20 26 aa     JSR $aa26   ; Draw shop text
a8dd: a9 03        LDA #$03
a8df: 85 63        STA $63
a8e1: 4c 07 a9     JMP $a907   ; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

; Do "select warrior" menu: which in $62, A/B flag in C
a8e4: a9 03        LDA #$03
a8e6: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
a8e9: a9 fb        LDA #$fb    ;; Warrior names string
a8eb: 85 3e        STA $3e
a8ed: a9 a8        LDA #$a8
a8ef: 85 3f        STA $3f
a8f1: 20 32 aa     JSR $aa32   ; Output string at p[$3e] to ($3a,$3b)
a8f4: a9 04        LDA #$04
a8f6: 85 63        STA $63
a8f8: 4c 07 a9     JMP $a907   ; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

a8fb: 10 00 01 11 00 01 12 00 01 13 00 00  ; <W1 name>\\<W2 name>\\<W3 name>\\<W4 name>

; Do shop main menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected
a907: a9 77        LDA #$77
a909: 85 3e        STA $3e
a90b: a9 a9        LDA #$a9
a90d: 85 3f        STA $3f
a90f: 4c 1a a9     JMP $a91a

; Do shop wares menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected
a912: a9 7f        LDA #$7f
a914: 85 3e        STA $3e
a916: a9 a9        LDA #$a9
a918: 85 3f        STA $3f
a91a: a9 00        LDA #$00
a91c: 85 62        STA $62
a91e: a5 20        LDA $20
a920: 29 0c        AND #$0c
a922: 85 61        STA $61
a924: a5 62        LDA $62      ; ($64,$65) = cursor position for menu item $62
a926: 0a           ASL
a927: a8           TAY
a928: b1 3e        LDA ($3e),Y
a92a: 85 64        STA $64
a92c: c8           INY
a92d: b1 3e        LDA ($3e),Y
a92f: 85 65        STA $65
a931: 20 27 a7     JSR $a727   ; Draw warriors in shop, cursor, V-Blank, sound, buttons
a934: a5 25        LDA $25     ;; Check buttons: A, B, U/D
a936: d0 32        BNE +$32  [$a96a]
a938: a5 24        LDA $24
a93a: d0 38        BNE +$38  [$a974]
a93c: a5 20        LDA $20
a93e: 29 0c        AND #$0c
a940: c5 61        CMP $61
a942: f0 e0        BEQ +$e0  [$a924]
a944: 85 61        STA $61
a946: c9 00        CMP #$00
a948: f0 da        BEQ +$da  [$a924]
a94a: c9 08        CMP #$08    ;; U/D, move cursor
a94c: d0 0c        BNE +$0c  [$a95a]
a94e: c6 62        DEC $62
a950: 10 d2        BPL +$d2  [$a924]
a952: a5 63        LDA $63
a954: 38           SEC
a955: e9 01        SBC #$01
a957: 4c 65 a9     JMP $a965
a95a: a5 62        LDA $62
a95c: 18           CLC
a95d: 69 01        ADC #$01
a95f: c5 63        CMP $63
a961: 90 02        BCC +$02  [$a965]
a963: a9 00        LDA #$00
a965: 85 62        STA $62
a967: 4c 24 a9     JMP $a924
a96a: 38           SEC         ;; A button: return C clear
a96b: a9 00        LDA #$00
a96d: 85 24        STA $24
a96f: 85 25        STA $25
a971: 85 22        STA $22
a973: 60           RTS
a974: 18           CLC         ;; B button: return C set
a975: 90 f4        BCC +$f4  [$a96b]

; Cursor positions for shop main menu
a977: 28 a0
a979: 28 b0
a97b: 28 c0
a97d: 28 d0

; Cursor position for shop wares menu
a97f: a8 20
a981: a8 40
a983: a8 60
a985: a8 80
a987: a8 a0

a989: a9 00        LDA #$00
a98b: 85 63        STA $63
a98d: a0 00        LDY #$00
a98f: a6 63        LDX $63
a991: bd 00 03     LDA $0300,X
a994: f0 39        BEQ +$39  [$a9cf]
a996: 99 11 03     STA $0311,Y
a999: 99 16 03     STA $0316,Y
a99c: a9 02        LDA #$02
a99e: 99 10 03     STA $0310,Y
a9a1: a9 03        LDA #$03
a9a3: 99 15 03     STA $0315,Y
a9a6: a9 01        LDA #$01
a9a8: 99 12 03     STA $0312,Y
a9ab: 99 17 03     STA $0317,Y
a9ae: a9 c6        LDA #$c6
a9b0: 99 13 03     STA $0313,Y
a9b3: b9 11 03     LDA $0311,Y
a9b6: 38           SEC
a9b7: e9 b0        SBC #$b0
a9b9: 4a           LSR
a9ba: 4a           LSR
a9bb: 4a           LSR
a9bc: 38           SEC
a9bd: 69 80        ADC #$80
a9bf: 99 14 03     STA $0314,Y
a9c2: 98           TYA
a9c3: 18           CLC
a9c4: 69 08        ADC #$08
a9c6: a8           TAY
a9c7: e6 63        INC $63
a9c9: a5 63        LDA $63
a9cb: c9 05        CMP #$05
a9cd: 90 c0        BCC +$c0  [$a98f]
a9cf: a9 00        LDA #$00
a9d1: 99 10 03     STA $0310,Y
a9d4: a9 02        LDA #$02
a9d6: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
a9d9: a9 10        LDA #$10
a9db: 85 3e        STA $3e
a9dd: a9 03        LDA #$03
a9df: 85 3f        STA $3f
a9e1: 20 32 aa     JSR $aa32   ; Output string at p[$3e] to ($3a,$3b)
a9e4: a9 03        LDA #$03
a9e6: 20 41 aa     JSR $aa41   ; Load shop window location (in A)
a9e9: 20 46 e1     JSR $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
a9ec: 4c 12 a9     JMP $a912   ; Do shop wares menu: # items in $63; C clear/set indicates A/B, $62 is menu item selected

; Setup cursor at ($64,$65)
a9ef: a5 64        LDA $64
a9f1: 85 40        STA $40
a9f3: a5 65        LDA $65
a9f5: 85 41        STA $41
a9f7: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Draw warriors in shop
a9fa: a9 98        LDA #$98
a9fc: 85 40        STA $40
a9fe: a9 38        LDA #$38
aa00: 85 41        STA $41
aa02: a9 40        LDA #$40
aa04: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
aa07: a9 50        LDA #$50
aa09: 85 41        STA $41
aa0b: a9 80        LDA #$80
aa0d: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
aa10: a9 68        LDA #$68
aa12: 85 41        STA $41
aa14: a9 c0        LDA #$c0
aa16: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
aa19: a9 50        LDA #$50
aa1b: 85 41        STA $41
aa1d: a9 88        LDA #$88
aa1f: 85 40        STA $40
aa21: a9 00        LDA #$00
aa23: 4c fd eb     JMP $ebfd   ; Set warrior A sprite at ($40,$41)

; Draw shop text
aa26: 0a           ASL
aa27: aa           TAX
aa28: bd 00 80     LDA $8000,X
aa2b: 85 3e        STA $3e
aa2d: bd 01 80     LDA $8001,X
aa30: 85 3f        STA $3f
aa32: a2 0e        LDX #$0e
aa34: 86 57        STX $57
aa36: 86 58        STX $58
aa38: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Draw shop window (in A)
aa3b: 20 41 aa     JSR $aa41   ; Load shop window location (in A)
aa3e: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; Load shop window location (in A)
aa41: aa           TAX
aa42: bd 40 ac     LDA $ac40,X
aa45: 85 38        STA $38
aa47: bd 45 ac     LDA $ac45,X
aa4a: 85 39        STA $39
aa4c: bd 4a ac     LDA $ac4a,X
aa4f: 85 3c        STA $3c
aa51: bd 4f ac     LDA $ac4f,X
aa54: 85 3d        STA $3d
aa56: a9 0e        LDA #$0e
aa58: 85 57        STA $57
aa5a: 60           RTS

; Draw shopkeeper text in A
aa5b: 48           PHA
aa5c: a9 00        LDA #$00
aa5e: 20 3b aa     JSR $aa3b   ; Draw shop window (in A)
aa61: 68           PLA
aa62: 4c 26 aa     JMP $aa26   ; Draw shop text

; Draw "X Gold OK?", $030c = item number, $10-$12 = $030e-f = price
aa65: a9 0e        LDA #$0e
aa67: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("\\Gold\\OK?")
aa6a: a5 62        LDA $62     ;; Wares menu test still in $0310+, so just
aa6c: 0a           ASL         ;; point to the part that holds the price
aa6d: 0a           ASL
aa6e: 0a           ASL
aa6f: 18           CLC
aa70: 69 15        ADC #$15
aa72: 85 3e        STA $3e
aa74: 18           CLC         ;; and null terminate just after
aa75: 69 02        ADC #$02
aa77: aa           TAX
aa78: a9 00        LDA #$00
aa7a: 9d 00 03     STA $0300,X
aa7d: ca           DEX
aa7e: bd 00 03     LDA $0300,X  ; Copy item number
aa81: 8d 0c 03     STA $030c
aa84: a9 03        LDA #$03
aa86: 85 3f        STA $3f
aa88: ad 0c 03     LDA $030c
aa8b: 20 b9 ec     JSR $ecb9   ; $10-12 = price of item in A        
aa8e: a5 10        LDA $10
aa90: 8d 0e 03     STA $030e
aa93: a5 11        LDA $11
aa95: 8d 0f 03     STA $030f
aa98: 4c 32 aa     JMP $aa32   ; Output string at p[$3e] to ($3a,$3b)

; Output "<$0300-1> Gold OK?"
aa9b: a9 0e        LDA #$0e
aa9d: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Gold OK?")
aaa0: ad 00 03     LDA $0300   ; display gold in $0300-0301
aaa3: 85 10        STA $10
aaa5: ad 01 03     LDA $0301
aaa8: 85 11        STA $11
aaaa: a9 00        LDA #$00
aaac: 85 12        STA $12
aaae: 20 84 8e     JSR $8e84   ; p[$3e] = 5-digit number in $10-12
aab1: 4c 32 aa     JMP $aa32   ; Output string at p[$3e] to ($3a,$3b)

; Output "<sell price> Gold OK?", $030e-f = sell price
aab4: a5 62        LDA $62
aab6: aa           TAX
aab7: 18           CLC
aab8: 6d 0a 03     ADC $030a
aabb: 8d 0a 03     STA $030a
aabe: bd 00 03     LDA $0300,X
aac1: 48           PHA
aac2: a9 0e        LDA #$0e
aac4: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A ("Gold OK?")
aac7: 68           PLA
aac8: 20 b9 ec     JSR $ecb9   ; $10-12 = (price of item in A)/2
aacb: 46 11        LSR $11
aacd: 66 10        ROR $10
aacf: a5 10        LDA $10
aad1: 8d 0e 03     STA $030e
aad4: a5 11        LDA $11
aad6: 8d 0f 03     STA $030f
aad9: 20 84 8e     JSR $8e84   ; p[$3e] = 5-digit number in $10-12
aadc: 4c 32 aa     JMP $aa32   ; Output string at p[$3e] to ($3a,$3b)

aadf: ae 0a 03     LDX $030a
aae2: bd 00 61     LDA $6100,X
aae5: 0a           ASL
aae6: aa           TAX
aae7: bd 00 ad     LDA $ad00,X
aaea: 85 10        STA $10
aaec: bd 01 ad     LDA $ad01,X
aaef: 85 11        STA $11
aaf1: ad 0c 03     LDA $030c
aaf4: 38           SEC
aaf5: e9 b0        SBC #$b0
aaf7: 85 12        STA $12
aaf9: 29 07        AND #$07
aafb: 85 13        STA $13
aafd: a5 12        LDA $12
aaff: 4a           LSR
ab00: 4a           LSR
ab01: 4a           LSR
ab02: a8           TAY
ab03: b1 10        LDA ($10),Y
ab05: 85 14        STA $14
ab07: a6 13        LDX $13
ab09: bd 38 ac     LDA $ac38,X
ab0c: 25 14        AND $14
ab0e: f0 0a        BEQ +$0a  [$ab1a]
ab10: a9 19        LDA #$19
ab12: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
ab15: 68           PLA
ab16: 68           PLA
ab17: 4c 65 a3     JMP $a365
ab1a: a5 12        LDA $12
ab1c: 4a           LSR
ab1d: 29 1c        AND #$1c
ab1f: 18           CLC
ab20: 6d 0a 03     ADC $030a
ab23: aa           TAX
ab24: a5 13        LDA $13
ab26: 18           CLC
ab27: 69 01        ADC #$01
ab29: dd 00 63     CMP $6300,X
ab2c: f0 25        BEQ +$25  [$ab53]
ab2e: dd 01 63     CMP $6301,X
ab31: f0 20        BEQ +$20  [$ab53]
ab33: dd 02 63     CMP $6302,X
ab36: f0 1b        BEQ +$1b  [$ab53]
ab38: bd 00 63     LDA $6300,X
ab3b: f0 20        BEQ +$20  [$ab5d]
ab3d: e8           INX
ab3e: bd 00 63     LDA $6300,X
ab41: f0 1a        BEQ +$1a  [$ab5d]
ab43: e8           INX
ab44: bd 00 63     LDA $6300,X
ab47: f0 14        BEQ +$14  [$ab5d]
ab49: a9 22        LDA #$22
ab4b: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
ab4e: 68           PLA
ab4f: 68           PLA
ab50: 4c 65 a3     JMP $a365
ab53: a9 1a        LDA #$1a
ab55: 20 5b aa     JSR $aa5b   ; Draw shopkeeper text in A
ab58: 68           PLA
ab59: 68           PLA
ab5a: 4c 65 a3     JMP $a365
ab5d: a5 13        LDA $13
ab5f: 18           CLC
ab60: 69 01        ADC #$01
ab62: 8d 0b 03     STA $030b
ab65: 8e 0a 03     STX $030a
ab68: 60           RTS

; SAVE!
ab69: a2 00        LDX #$00
ab6b: a5 27        LDA $27
ab6d: 8d 10 60     STA $6010
ab70: a5 28        LDA $28
ab72: 8d 11 60     STA $6011
ab75: a5 42        LDA $42
ab77: 8d 14 60     STA $6014
ab7a: bd 00 60     LDA $6000,X
ab7d: 9d 00 64     STA $6400,X
ab80: bd 00 61     LDA $6100,X
ab83: 9d 00 65     STA $6500,X
ab86: bd 00 62     LDA $6200,X
ab89: 9d 00 66     STA $6600,X
ab8c: bd 00 63     LDA $6300,X
ab8f: 9d 00 67     STA $6700,X
ab92: e8           INX
ab93: d0 e5        BNE +$e5  [$ab7a]
ab95: a9 55        LDA #$55
ab97: 8d fe 64     STA $64fe
ab9a: a9 aa        LDA #$aa
ab9c: 8d ff 64     STA $64ff
ab9f: a9 00        LDA #$00
aba1: 8d fd 64     STA $64fd
aba4: a2 00        LDX #$00
aba6: 18           CLC
aba7: 7d 00 64     ADC $6400,X
abaa: 7d 00 65     ADC $6500,X
abad: 7d 00 66     ADC $6600,X
abb0: 7d 00 67     ADC $6700,X
abb3: e8           INX
abb4: d0 f1        BNE +$f1  [$aba7]
abb6: 49 ff        EOR #$ff
abb8: 8d fd 64     STA $64fd
abbb: a9 56        LDA #$56
abbd: 85 4b        STA $4b
abbf: a9 30        LDA #$30
abc1: 8d 04 40     STA $4004
abc4: a9 7f        LDA #$7f
abc6: 8d 05 40     STA $4005
abc9: a9 00        LDA #$00
abcb: 8d 06 40     STA $4006
abce: 8d 07 40     STA $4007
abd1: 60           RTS

abd2: a2 00        LDX #$00
abd4: bd 01 61     LDA $6101,X
abd7: c9 01        CMP #$01
abd9: f0 10        BEQ +$10  [$abeb]
abdb: c9 02        CMP #$02
abdd: f0 0c        BEQ +$0c  [$abeb]
abdf: bd 0c 61     LDA $610c,X
abe2: 9d 0a 61     STA $610a,X
abe5: bd 0d 61     LDA $610d,X
abe8: 9d 0b 61     STA $610b,X
abeb: 8a           TXA
abec: 18           CLC
abed: 69 40        ADC #$40
abef: aa           TAX
abf0: d0 e2        BNE +$e2  [$abd4]
abf2: 60           RTS

; Restore magic (Inn/house)
abf3: a2 00        LDX #$00
abf5: bd 01 61     LDA $6101,X
abf8: c9 01        CMP #$01
abfa: f0 34        BEQ +$34  [$ac30]
abfc: c9 02        CMP #$02
abfe: f0 30        BEQ +$30  [$ac30]
ac00: bd 28 63     LDA $6328,X
ac03: 9d 20 63     STA $6320,X
ac06: bd 29 63     LDA $6329,X
ac09: 9d 21 63     STA $6321,X
ac0c: bd 2a 63     LDA $632a,X
ac0f: 9d 22 63     STA $6322,X
ac12: bd 2b 63     LDA $632b,X
ac15: 9d 23 63     STA $6323,X
ac18: bd 2c 63     LDA $632c,X
ac1b: 9d 24 63     STA $6324,X
ac1e: bd 2d 63     LDA $632d,X
ac21: 9d 25 63     STA $6325,X
ac24: bd 2e 63     LDA $632e,X
ac27: 9d 26 63     STA $6326,X
ac2a: bd 2f 63     LDA $632f,X
ac2d: 9d 27 63     STA $6327,X
ac30: 8a           TXA
ac31: 18           CLC
ac32: 69 40        ADC #$40
ac34: aa           TAX
ac35: d0 be        BNE +$be  [$abf5]
ac37: 60           RTS

ac38: 80 40 20 10 08 04 02 01

;; Shop window coordinates
;     Talk  Wares Gold
;        Shop  Menu
ac40: 01 0c 16 06 12 ; X
ac45: 04 02 02 12 18 ; Y
ac4a: 09 08 09 09 0a ; W
ac4f: 0c 04 16 0a 04 ; H

; Shop tile offsets (data in bank 09)
ac54: 00 0e 1c 2a 38 46 54 62 

; Shop palette map
ac5c: ff ff ff 55 55 ff ff ff
ac64: ff ff 3f 05 05 cf ff ff
ac6c: ff ff 33 00 00 cc ff ff
ac74: ff ff 33 00 00 cc ff ff
ac7c: ff ff ff ff ff ff ff ff
ac84: ff ff ff ff ff ff ff ff
ac8c: ff ff ff ff aa aa aa aa
ac94: ff ff ff ff ff ff ff ff

; Shop display pattern table
ac9c: 00 00 00 00 00 00 00 00 00 00
aca6: 00 00 00 00 00 00 00 00 00 00
acb0: 00 00 00 00 01 01 00 00 00 00
acba: 04 05 00 00 01 01 00 00 00 00
acc4: 06 07 08 09 01 01 00 00 00 00
acce: 04 05 0a 0b 01 01 00 00 00 00
acd8: 06 07 0c 0d 01 01 00 00 00 00
ace2: 04 05 00 00 01 01 00 00 00 00
acec: 06 07 00 00 01 01 00 00 00 00
acf6: 00 00 00 00 02 03 00 00 00 00

; Class magic learning ability pointers
ad00: 18 ad        .DW $ad18  ; Fi
ad02: 20 ad        .DW $ad20  ; Th
ad04: 28 ad        .DW $ad28  ; etc...
ad06: 30 ad        .DW $ad30
ad08: 38 ad        .DW $ad38
ad0a: 40 ad        .DW $ad40
ad0c: 48 ad        .DW $ad48
ad0e: 50 ad        .DW $ad50
ad10: 58 ad        .DW $ad58
ad12: 60 ad        .DW $ad60
ad14: 68 ad        .DW $ad68
ad16: 70 ad        .DW $ad70

; Who can use what magic? Bit clear means they can learn it.
ad18: ff           .DB $FF  ; Fi
ad19: ff           .DB $FF
ad1a: ff           .DB $FF
ad1b: ff           .DB $FF
ad1c: ff           .DB $FF
ad1d: ff           .DB $FF
ad1e: ff           .DB $FF
ad1f: ff           .DB $FF
ad20: ff           .DB $FF  ; Th
ad21: ff           .DB $FF
ad22: ff           .DB $FF
ad23: ff           .DB $FF
ad24: ff           .DB $FF
ad25: ff           .DB $FF
ad26: ff           .DB $FF
ad27: ff           .DB $FF
ad28: ff           .DB $FF  ; BB
ad29: ff           .DB $FF
ad2a: ff           .DB $FF
ad2b: ff           .DB $FF
ad2c: ff           .DB $FF
ad2d: ff           .DB $FF
ad2e: ff           .DB $FF
ad2f: ff           .DB $FF
ad30: 50           .DB $50  ; RM
ad31: 00           .DB $00
ad32: 50           .DB $50
ad33: 50           .DB $50
ad34: 76           .DB $76
ad35: ff           .DB $ff
ad36: ff           .DB $ff
ad37: ff           .DB $ff
ad38: 0f           .DB $0f  ; WM
ad39: 0f           .DB $0f
ad3a: 0f           .DB $0f
ad3b: 0f           .DB $0f
ad3c: 0f           .DB $0f
ad3d: 4f           .DB $4f
ad3e: cf           .DB $cf
ad3f: ff           .DB $ff
ad40: f0           .DB $f0  ; BM
ad41: f0           .DB $f0
ad42: f0           .DB $f0
ad43: f0           .DB $f0
ad44: f2           .DB $f2
ad45: f0           .DB $f0
ad46: f6           .DB $f6
ad47: ff           .DB $ff
ad48: 4f           .DB $4f  ; Kn
ad49: 0f           .DB $0f
ad4a: 5f           .DB $5f
ad4b: ff           .DB $ff
ad4c: ff           .DB $ff
ad4d: ff           .DB $ff
ad4e: ff           .DB $ff
ad4f: ff           .DB $ff
ad50: f0           .DB $f0  ; Ni
ad51: f0           .DB $f0
ad52: f0           .DB $f0
ad53: f0           .DB $f0
ad54: ff           .DB $ff
ad55: ff           .DB $ff
ad56: ff           .DB $ff
ad57: ff           .DB $ff
ad58: ff           .DB $ff  ; Ma
ad59: ff           .DB $ff
ad5a: ff           .DB $ff
ad5b: ff           .DB $ff
ad5c: ff           .DB $ff
ad5d: ff           .DB $ff
ad5e: ff           .DB $ff
ad5f: ff           .DB $ff
ad60: 40           .DB $40  ; RW
ad61: 00           .DB $00
ad62: 50           .DB $50
ad63: 40           .DB $40
ad64: 30           .DB $30
ad65: 87           .DB $87
ad66: d7           .DB $d7
ad67: ff           .DB $ff
ad68: 0f           .DB $0f  ; WW
ad69: 0f           .DB $0f
ad6a: 0f           .DB $0f
ad6b: 0f           .DB $0f
ad6c: 0f           .DB $0f
ad6d: 0f           .DB $0f
ad6e: 0f           .DB $0f
ad6f: 0f           .DB $0f
ad70: f0           .DB $f0  ; BW
ad71: f0           .DB $f0
ad72: f0           .DB $f0
ad73: f0           .DB $f0
ad74: f0           .DB $f0
ad75: f0           .DB $f0
ad76: f0           .DB $f0
ad77: f0           .DB $f0

; palettes of some sort
ad78: 0f 30 01 22 0f 00 01 30 0f 00 01 30 

; Sound stuff (menu move bleep?)
ad84: a9 ba        LDA #$ba
ad86: 8d 04 40     STA $4004
ad89: a9 ba        LDA #$ba
ad8b: 8d 05 40     STA $4005
ad8e: a9 40        LDA #$40
ad90: 8d 06 40     STA $4006
ad93: a9 00        LDA #$00
ad95: 8d 07 40     STA $4007
ad98: a9 1f        LDA #$1f
ad9a: 85 7e        STA $7e
ad9c: 60           RTS

; Sound stuff (menu change bleep?)
ad9d: a9 7a        LDA #$7a
ad9f: 8d 04 40     STA $4004
ada2: a9 9b        LDA #$9b
ada4: 8d 05 40     STA $4005
ada7: a9 20        LDA #$20
ada9: 8d 06 40     STA $4006
adac: 4a           LSR
adad: 8d 07 40     STA $4007
adb0: 85 7e        STA $7e
adb2: 60           RTS

adb3: a9 51        LDA #$51
adb5: 85 4b        STA $4b
adb7: a9 00        LDA #$00
adb9: 8d 01 20     STA $2001
adbc: 8d 15 40     STA $4015
adbf: 20 06 e9     JSR $e906   ; Load menu screen tiles and palettes
adc2: a2 0b        LDX #$0b
adc4: bd 78 ad     LDA $ad78,X
adc7: 9d c0 03     STA $03c0,X
adca: ca           DEX
adcb: 10 f7        BPL +$f7  [$adc4]
adcd: a9 00        LDA #$00
adcf: 8d 01 20     STA $2001
add2: a9 00        LDA #$00
add4: 85 37        STA $37
add6: 20 3a b8     JSR $b83a
add9: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
addc: a9 00        LDA #$00
adde: 85 62        STA $62
ade0: 85 20        STA $20
ade2: 85 61        STA $61
ade4: a9 05        LDA #$05
ade6: 85 63        STA $63
ade8: 20 3c c4     JSR $c43c   ; Clear sprites
adeb: 20 ba b7     JSR $b7ba   ; Cursor point at menu screen menu item $62
adee: 20 35 b6     JSR $b635
adf1: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
adf4: a5 24        LDA $24
adf6: d0 16        BNE +$16  [$ae0e]
adf8: a5 25        LDA $25
adfa: d0 06        BNE +$06  [$ae02]
adfc: 20 ab b6     JSR $b6ab
adff: 4c e8 ad     JMP $ade8
ae02: a9 00        LDA #$00
ae04: 8d 01 20     STA $2001
ae07: 85 24        STA $24
ae09: 85 25        STA $25
ae0b: 85 23        STA $23
ae0d: 60           RTS
ae0e: 20 84 ad     JSR $ad84   ; Sound stuff (menu move bleep?)
ae11: a5 62        LDA $62
ae13: d0 06        BNE +$06  [$ae1b]
ae15: 20 1d b1     JSR $b11d   ; ITEM screen!
ae18: 4c cd ad     JMP $adcd
ae1b: c9 01        CMP #$01
ae1d: d0 24        BNE +$24  [$ae43]
ae1f: 20 71 ae     JSR $ae71
ae22: b0 42        BCS +$42  [$ae66]
ae24: a5 62        LDA $62
ae26: 6a           ROR
ae27: 6a           ROR
ae28: 6a           ROR
ae29: 29 c0        AND #$c0
ae2b: aa           TAX
ae2c: bd 01 61     LDA $6101,X
ae2f: c9 01        CMP #$01
ae31: f0 04        BEQ +$04  [$ae37]
ae33: c9 02        CMP #$02
ae35: d0 06        BNE +$06  [$ae3d]
ae37: 20 26 db     JSR $db26   ; "can't do that" buzz?
ae3a: 4c 1f ae     JMP $ae1f
ae3d: 20 97 ae     JSR $ae97   ; MAGIC screen!
ae40: 4c cd ad     JMP $adcd
ae43: c9 02        CMP #$02
ae45: d0 08        BNE +$08  [$ae4f]
ae47: a9 18        LDA #$18
ae49: 20 ca ba     JSR $baca
ae4c: 4c cd ad     JMP $adcd
ae4f: c9 03        CMP #$03
ae51: d0 08        BNE +$08  [$ae5b]
ae53: a9 1c        LDA #$1c
ae55: 20 ca ba     JSR $baca
ae58: 4c cd ad     JMP $adcd
ae5b: 20 71 ae     JSR $ae71
ae5e: b0 06        BCS +$06  [$ae66]
ae60: 20 ad b4     JSR $b4ad
ae63: 4c cd ad     JMP $adcd
ae66: a9 00        LDA #$00
ae68: 85 62        STA $62
ae6a: a9 05        LDA #$05
ae6c: 85 63        STA $63
ae6e: 4c e8 ad     JMP $ade8
ae71: a9 00        LDA #$00
ae73: 85 62        STA $62
ae75: 20 3c c4     JSR $c43c   ; Clear sprites
ae78: 20 35 b6     JSR $b635
ae7b: 20 a9 b7     JSR $b7a9   ; Cursor point at menu screen character $62
ae7e: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
ae81: a5 24        LDA $24
ae83: d0 0c        BNE +$0c  [$ae91]
ae85: a5 25        LDA $25
ae87: d0 06        BNE +$06  [$ae8f]
ae89: 20 8c b6     JSR $b68c
ae8c: 4c 75 ae     JMP $ae75
ae8f: 38           SEC
ae90: 60           RTS
ae91: a5 62        LDA $62
ae93: 85 66        STA $66
ae95: 18           CLC
ae96: 60           RTS

; MAGIC screen!
ae97: a9 00        LDA #$00
ae99: 8d 01 20     STA $2001
ae9c: 85 37        STA $37
ae9e: 85 7f        STA $7f
aea0: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
aea3: 20 6d ba     JSR $ba6d
aea6: 08           PHP
aea7: a9 07        LDA #$07
aea9: 20 ef b8     JSR $b8ef   ; Draw window A
aeac: a9 29        LDA #$29
aeae: 20 59 b9     JSR $b959
aeb1: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
aeb4: 28           PLP
aeb5: 90 03        BCC +$03  [$aeba]
aeb7: 4c 13 b6     JMP $b613   ; Wait for A or B to be pressed, then bleep
aeba: a9 00        LDA #$00
aebc: 85 20        STA $20
aebe: 85 61        STA $61
aec0: 20 3c c4     JSR $c43c   ; Clear sprites
aec3: 20 16 b8     JSR $b816   ; Set cursor for magic screen
aec6: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
aec9: a5 24        LDA $24
aecb: d0 0b        BNE +$0b  [$aed8]  ;; A: try to cast
aecd: a5 25        LDA $25
aecf: d0 06        BNE +$06  [$aed7]  ;; B: return
aed1: 20 dd b6     JSR $b6dd   ; Magic screen cursor movement
aed4: 4c c0 ae     JMP $aec0
aed7: 60           RTS
aed8: 20 84 ad     JSR $ad84   ; Sound stuff (menu move bleep?)
aedb: 20 02 b1     JSR $b102   ; Check if a magic charge is available for warrior $66 spell slot $62
aede: b0 08        BCS +$08  [$aee8]
aee0: a9 32        LDA #$32
aee2: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
aee5: 4c c0 ae     JMP $aec0
aee8: a5 66        LDA $66     ;; Cast spell
aeea: 4a           LSR         ; first, find index
aeeb: 6a           ROR
aeec: 6a           ROR
aeed: 05 62        ORA $62
aeef: aa           TAX
aef0: 0a           ASL
aef1: 29 38        AND #$38
aef3: 1d 00 63     ORA $6300,X ; Get spell
aef6: 18           CLC
aef7: 69 af        ADC #$af
aef9: c9 b0        CMP #$b0    ; CURE?
aefb: d0 03        BNE +$03  [$af00]
aefd: 4c 5c af     JMP $af5c
af00: c9 c0        CMP #$c0    ; CUR2?
af02: d0 03        BNE +$03  [$af07]
af04: 4c 64 af     JMP $af64
af07: c9 d0        CMP #$d0    ; CUR3?
af09: d0 03        BNE +$03  [$af0e]
af0b: 4c 6c af     JMP $af6c
af0e: c9 e0        CMP #$e0    ; CUR4?
af10: d0 03        BNE +$03  [$af15]
af12: 4c ad af     JMP $afad
af15: c9 c3        CMP #$c3    ; HEAL?
af17: d0 03        BNE +$03  [$af1c]
af19: 4c dc af     JMP $afdc
af1c: c9 e3        CMP #$e3    ; HEL3?
af1e: d0 03        BNE +$03  [$af23]
af20: 4c ee af     JMP $afee
af23: c9 d3        CMP #$d3    ; HEL2?
af25: d0 03        BNE +$03  [$af2a]
af27: 4c e5 af     JMP $afe5
af2a: c9 c8        CMP #$c8    ; PURE?
af2c: d0 03        BNE +$03  [$af31]
af2e: 4c 7d b0     JMP $b07d
af31: c9 d1        CMP #$d1    ; LIFE?
af33: d0 03        BNE +$03  [$af38]
af35: 4c 18 b0     JMP $b018
af38: c9 e8        CMP #$e8    ; LIF2?
af3a: d0 03        BNE +$03  [$af3f]
af3c: 4c 47 b0     JMP $b047
af3f: c9 d6        CMP #$d6    ; WARP?
af41: d0 03        BNE +$03  [$af46]
af43: 4c d1 b0     JMP $b0d1
af46: c9 d8        CMP #$d8    ; SOFT?
af48: d0 03        BNE +$03  [$af4d]
af4a: 4c a7 b0     JMP $b0a7
af4d: c9 d9        CMP #$d9    ; EXIT?
af4f: d0 03        BNE +$03  [$af54]
af51: 4c f2 b0     JMP $b0f2
af54: a9 33        LDA #$33    ;; Any other magic
af56: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
af59: 4c c0 ae     JMP $aec0

;; CURE/CUR2/CUR3 routine
af5c: a5 f0        LDA $f0     ;; CURE: 16-31 HP
af5e: 29 0f        AND #$0f
af60: 09 10        ORA #$10
af62: d0 0e        BNE +$0e  [$af72]
af64: a5 f0        LDA $f0     ;; CUR2: 32-63 HP
af66: 29 1f        AND #$1f
af68: 09 20        ORA #$20
af6a: d0 06        BNE +$06  [$af72]
af6c: a5 f0        LDA $f0     ;; CUR3: 64-127 HP
af6e: 29 3f        AND #$3f
af70: 09 40        ORA #$40
af72: 85 64        STA $64
af74: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
af77: a9 2b        LDA #$2b
af79: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
af7c: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
af7f: b0 23        BCS +$23  [$afa4]
af81: a5 62        LDA $62
af83: 6a           ROR
af84: 6a           ROR
af85: 6a           ROR
af86: 29 c0        AND #$c0
af88: aa           TAX
af89: bd 01 61     LDA $6101,X
af8c: c9 01        CMP #$01
af8e: f0 17        BEQ +$17  [$afa7]
af90: c9 02        CMP #$02
af92: f0 13        BEQ +$13  [$afa7]
af94: a5 64        LDA $64
af96: 20 61 b5     JSR $b561   ; Restore HP (amount in A) for warrior X
af99: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
af9c: a6 65        LDX $65     ; subtract a charge
af9e: de 00 63     DEC $6300,X
afa1: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
afa4: 4c 97 ae     JMP $ae97   ; MAGIC screen!
afa7: 20 26 db     JSR $db26   ; "can't do that" buzz?
afaa: 4c 7c af     JMP $af7c

;; CUR4 routine
afad: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
afb0: a9 2b        LDA #$2b
afb2: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
afb5: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
afb8: b0 ea        BCS +$ea  [$afa4]
afba: a5 62        LDA $62
afbc: 6a           ROR
afbd: 6a           ROR
afbe: 6a           ROR
afbf: 29 c0        AND #$c0
afc1: aa           TAX
afc2: bd 0d 61     LDA $610d,X ; HP=Max
afc5: 9d 0b 61     STA $610b,X
afc8: bd 0c 61     LDA $610c,X
afcb: 9d 0a 61     STA $610a,X
afce: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
afd1: a6 65        LDX $65     ; subtract a charge
afd3: de 00 63     DEC $6300,X
afd6: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
afd9: 4c 97 ae     JMP $ae97   ; MAGIC screen!

;; HEAL/HEL2/HEL3
afdc: a5 f0        LDA $f0     ; HEAL: 16-23 HP
afde: 29 07        AND #$07
afe0: 18           CLC
afe1: 69 10        ADC #$10
afe3: d0 10        BNE +$10  [$aff5]
afe5: a5 f0        LDA $f0     ; HEL2: 32-47 HP
afe7: 29 0f        AND #$0f
afe9: 18           CLC
afea: 69 20        ADC #$20
afec: d0 07        BNE +$07  [$aff5]
afee: a5 f0        LDA $f0     ; HEL3: 64-95 HP
aff0: 29 1f        AND #$1f
aff2: 18           CLC
aff3: 69 40        ADC #$40
aff5: 85 64        STA $64
aff7: a9 2c        LDA #$2c
aff9: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
affc: 20 3c c4     JSR $c43c   ; Clear sprites
afff: 20 25 b6     JSR $b625   ; Wait for A or B to be pressed
b002: a5 20        LDA $20
b004: 29 80        AND #$80
b006: f0 0d        BEQ +$0d  [$b015]
b008: a5 64        LDA $64
b00a: 20 3f b5     JSR $b53f   ; Restore HP (amount in A) for all warriors
b00d: a6 65        LDX $65     ; subtract charge
b00f: de 00 63     DEC $6300,X
b012: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b015: 4c 97 ae     JMP $ae97   ; MAGIC screen!

;; LIFE
b018: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b01b: a9 2e        LDA #$2e
b01d: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b020: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b023: b0 f0        BCS +$f0  [$b015]
b025: a9 01        LDA #$01
b027: 85 10        STA $10
b029: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b02c: b0 13        BCS +$13  [$b041]
b02e: a9 01        LDA #$01    ; HP = 1
b030: 9d 0a 61     STA $610a,X
b033: a6 65        LDX $65     ; subtract a charge
b035: de 00 63     DEC $6300,X
b038: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b03b: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b03e: 4c 97 ae     JMP $ae97   ; MAGIC screen!
b041: 20 26 db     JSR $db26   ; "can't do that" buzz?
b044: 4c 20 b0     JMP $b020

;; LIF2
b047: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b04a: a9 2e        LDA #$2e
b04c: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b04f: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b052: b0 c1        BCS +$c1  [$b015]
b054: a9 01        LDA #$01
b056: 85 10        STA $10
b058: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b05b: b0 1a        BCS +$1a  [$b077]
b05d: bd 0c 61     LDA $610c,X ; HP = max
b060: 9d 0a 61     STA $610a,X
b063: bd 0d 61     LDA $610d,X
b066: 9d 0b 61     STA $610b,X
b069: a6 65        LDX $65     ; subtract a charge
b06b: de 00 63     DEC $6300,X
b06e: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b071: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b074: 4c 97 ae     JMP $ae97   ; MAGIC screen!
b077: 20 26 db     JSR $db26   ; "can't do that" buzz?
b07a: 4c 4f b0     JMP $b04f

;; PURE
b07d: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b080: a9 2d        LDA #$2d
b082: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b085: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b088: b0 14        BCS +$14  [$b09e]
b08a: a9 03        LDA #$03
b08c: 85 10        STA $10
b08e: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b091: b0 0e        BCS +$0e  [$b0a1]
b093: a6 65        LDX $65     ; subtract a charge
b095: de 00 63     DEC $6300,X
b098: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b09b: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b09e: 4c 97 ae     JMP $ae97   ; MAGIC screen!
b0a1: 20 26 db     JSR $db26   ; "can't do that" buzz?
b0a4: 4c 85 b0     JMP $b085

;; SOFT
b0a7: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b0aa: a9 30        LDA #$30
b0ac: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b0af: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b0b2: b0 ea        BCS +$ea  [$b09e]
b0b4: a9 02        LDA #$02
b0b6: 85 10        STA $10
b0b8: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b0bb: b0 0e        BCS +$0e  [$b0cb]
b0bd: a6 65        LDX $65     ; subtract a charge
b0bf: de 00 63     DEC $6300,X
b0c2: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b0c5: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b0c8: 4c 97 ae     JMP $ae97   ; MAGIC screen!
b0cb: 20 26 db     JSR $db26   ; "can't do that" buzz?
b0ce: 4c af b0     JMP $b0af

;; WARP
b0d1: a9 2f        LDA #$2f
b0d3: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b0d6: a6 65        LDX $65     ; subtract a charge
b0d8: de 00 63     DEC $6300,X
b0db: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b0de: ba           TSX         ;; WARP-back points are stored on the stack
b0df: 8a           TXA
b0e0: c9 ef        CMP #$ef    ; no previous floor? EXIT
b0e2: b0 1b        BCS +$1b  [$b0ff]
b0e4: 18           CLC         ; This will end up returning to $c991
b0e5: 69 06        ADC #$06
b0e7: aa           TAX
b0e8: 9a           TXS
b0e9: a9 00        LDA #$00
b0eb: 8d 01 20     STA $2001
b0ee: 8d 15 40     STA $4015
b0f1: 60           RTS

;; EXIT
b0f2: a9 31        LDA #$31
b0f4: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b0f7: a6 65        LDX $65     ; subtract a charge
b0f9: de 00 63     DEC $6300,X
b0fc: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b0ff: 4c cb c0     JMP $c0cb   ; Back to the world map main loop

; Check if a magic charge is available for warrior $66 spell slot $62
b102: a5 66        LDA $66
b104: 6a           ROR
b105: 6a           ROR
b106: 6a           ROR
b107: 29 c0        AND #$c0
b109: 85 10        STA $10
b10b: a5 62        LDA $62
b10d: 4a           LSR
b10e: 4a           LSR
b10f: 18           CLC
b110: 65 10        ADC $10
b112: 69 20        ADC #$20
b114: aa           TAX
b115: 85 65        STA $65
b117: bd 00 63     LDA $6300,X
b11a: c9 01        CMP #$01
b11c: 60           RTS

; ITEM screen!
b11d: a9 00        LDA #$00
b11f: 8d 01 20     STA $2001
b122: 85 37        STA $37
b124: 85 7f        STA $7f
b126: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
b129: 20 18 ef     JSR $ef18
b12c: 08           PHP
b12d: a9 03        LDA #$03
b12f: 20 1d b9     JSR $b91d   ; Display subscreen title A
b132: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
b135: 28           PLP
b136: 90 08        BCC +$08  [$b140]
b138: a9 04        LDA #$04
b13a: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b13d: 4c 13 b6     JMP $b613   ; Wait for A or B to be pressed, then bleep
b140: a9 00        LDA #$00
b142: 85 62        STA $62
b144: 85 20        STA $20
b146: 85 61        STA $61
b148: 20 3c c4     JSR $c43c   ; Clear sprites
b14b: 20 c8 b7     JSR $b7c8   ; Cursor point at item screen item $62
b14e: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
b151: a5 24        LDA $24
b153: d0 0b        BNE +$0b  [$b160]
b155: c5 25        CMP $25
b157: d0 06        BNE +$06  [$b15f]
b159: 20 ac b5     JSR $b5ac   ; Item screen movement ($62)
b15c: 4c 48 b1     JMP $b148
b15f: 60           RTS
b160: 20 84 ad     JSR $ad84   ; Sound stuff (menu move bleep?)
b163: a6 62        LDX $62
b165: bd 00 03     LDA $0300,X
b168: 0a           ASL
b169: aa           TAX
b16a: bd 77 b1     LDA $b177,X
b16d: 85 10        STA $10
b16f: bd 78 b1     LDA $b178,X
b172: 85 11        STA $11
b174: 6c 10 00     JMP ($0010)

; Item effects
b177: b3 b1        .DW $b1b3   ; nothing?
b179: 36 b2        .DW $b236   ; LUTE
b17b: b6 b1        .DW $b1b6   ; CROWN
b17d: be b1        .DW $b1be   ; CRYSTAL
b17f: c2 b1        .DW $b1c2   ; HERB
b181: c6 b1        .DW $b1c6   ; KEY
b183: ca b1        .DW $b1ca   ; TNT
b185: ce b1        .DW $b1ce   ; ADAMANT
b187: d2 b1        .DW $b1d2   ; SLAB
b189: d6 b1        .DW $b1d6   ; RUBY
b18b: 0e b2        .DW $b20e   ; ROD
b18d: 5f b2        .DW $b25f   ; FLOATER
b18f: da b1        .DW $b1da   ; CHIME
b191: de b1        .DW $b1de   ; TAIL
b193: e2 b1        .DW $b1e2   ; CUBE
b195: ee b1        .DW $b1ee   ; BOTTLE
b197: e6 b1        .DW $b1e6   ; OXYALE
b199: ea b1        .DW $b1ea   ; CANOE
b19b: b3 b1        .DW $b1b3   ; 
b19d: b3 b1        .DW $b1b3   ; 
b19f: b3 b1        .DW $b1b3   ; 
b1a1: b3 b1        .DW $b1b3   ; 
b1a3: 84 b2        .DW $b284   ; TENT
b1a5: a1 b2        .DW $b2a1   ; CABIN
b1a7: be b2        .DW $b2be   ; HOUSE
b1a9: 01 b3        .DW $b301   ; HEAL[potion]
b1ab: 38 b3        .DW $b338   ; PURE[potion]
b1ad: 60 b3        .DW $b360   ; SOFT[potion]
b1af: b3 b1        .DW $b1b3   ; ??? Wooden nunchucks???
b1b1: b3 b1        .DW $b1b3

; Do nothing
b1b3: 4c 48 b1     JMP $b148

; CROWN
b1b6: a9 07        LDA #$07
b1b8: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b1bb: 4c 48 b1     JMP $b148

; CRYSTAL
b1be: a9 08        LDA #$08
b1c0: d0 f6        BNE +$f6  [$b1b8]

; HERB
b1c2: a9 09        LDA #$09
b1c4: d0 f2        BNE +$f2  [$b1b8]

; KEY
b1c6: a9 0a        LDA #$0a
b1c8: d0 ee        BNE +$ee  [$b1b8]

; TNT
b1ca: a9 0b        LDA #$0b
b1cc: d0 ea        BNE +$ea  [$b1b8]

; ADAMANT
b1ce: a9 0c        LDA #$0c
b1d0: d0 e6        BNE +$e6  [$b1b8]

; SLAB
b1d2: a9 0d        LDA #$0d
b1d4: d0 e2        BNE +$e2  [$b1b8]

; RUBY
b1d6: a9 0e        LDA #$0e
b1d8: d0 de        BNE +$de  [$b1b8]

; CHIME
b1da: a9 13        LDA #$13
b1dc: d0 da        BNE +$da  [$b1b8]

; TAIL
b1de: a9 14        LDA #$14
b1e0: d0 d6        BNE +$d6  [$b1b8]

; CUBE
b1e2: a9 15        LDA #$15
b1e4: d0 d2        BNE +$d2  [$b1b8]

; OXYALE
b1e6: a9 18        LDA #$18
b1e8: d0 ce        BNE +$ce  [$b1b8]

; CANOE
b1ea: a9 19        LDA #$19
b1ec: d0 ca        BNE +$ca  [$b1b8]

; BOTTLE
b1ee: ad 13 62     LDA $6213   ; sprite 0x13 visible?
b1f1: 4a           LSR
b1f2: 90 08        BCC +$08  [$b1fc]
b1f4: a9 17        LDA #$17    ; yes: empty message
b1f6: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b1f9: 4c 48 b1     JMP $b148
b1fc: a9 00        LDA #$00    ; no: take bottle, make visible, "pop" message
b1fe: 8d 2f 60     STA $602f
b201: a0 13        LDY #$13
b203: 20 a4 90     JSR $90a4   ; Show sprite Y (erases $10)
b206: a9 16        LDA #$16
b208: 20 27 b9     JSR $b927   ; Sound(?) and display out-of-battle magic message A
b20b: 4c 29 b1     JMP $b129

; ROD
;  In map and on 'use rod' square and plate visible -> remove plate
b20e: a5 2d        LDA $2d
b210: 4a           LSR
b211: 90 1b        BCC +$1b  [$b22e]
b213: a5 52        LDA $52
b215: 29 1e        AND #$1e
b217: c9 14        CMP #$14
b219: d0 13        BNE +$13  [$b22e]
b21b: a0 16        LDY #$16
b21d: b9 00 62     LDA $6200,Y
b220: 4a           LSR
b221: 90 0b        BCC +$0b  [$b22e]
b223: 20 73 92     JSR $9273   ; Hide sprite Y, ID number in A
b226: a9 0f        LDA #$0f
b228: 20 27 b9     JSR $b927   ; Sound(?) and display out-of-battle magic message A
b22b: 4c 48 b1     JMP $b148
b22e: a9 10        LDA #$10
b230: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b233: 4c 48 b1     JMP $b148

; LUTE
;  In map and on 'use lute' square and plate visible -> remove plate
b236: a5 2d        LDA $2d
b238: 4a           LSR
b239: 90 1c        BCC +$1c  [$b257]
b23b: a5 52        LDA $52
b23d: 29 1e        AND #$1e
b23f: c9 16        CMP #$16
b241: d0 14        BNE +$14  [$b257]
b243: a0 17        LDY #$17
b245: b9 00 62     LDA $6200,Y
b248: 4a           LSR
b249: 90 0c        BCC +$0c  [$b257]
b24b: 0a           ASL
b24c: 20 73 92     JSR $9273   ; Hide sprite Y, ID number in A
b24f: a9 05        LDA #$05
b251: 20 27 b9     JSR $b927   ; Sound(?) and display out-of-battle magic message A
b254: 4c 48 b1     JMP $b148
b257: a9 06        LDA #$06
b259: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b25c: 4c 48 b1     JMP $b148

; FLOATER
;  Not in map and on 'use floater' square and no airship -> give airship
b25f: a5 2d        LDA $2d
b261: 4a           LSR
b262: b0 18        BCS +$18  [$b27c]
b264: a5 52        LDA $52
b266: 29 c0        AND #$c0
b268: c9 c0        CMP #$c0
b26a: d0 10        BNE +$10  [$b27c]
b26c: ad 04 60     LDA $6004
b26f: d0 0b        BNE +$0b  [$b27c]
b271: ee 04 60     INC $6004
b274: a9 11        LDA #$11
b276: 20 27 b9     JSR $b927   ; Sound(?) and display out-of-battle magic message A
b279: 4c 48 b1     JMP $b148
b27c: a9 12        LDA #$12
b27e: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b281: 4c 48 b1     JMP $b148

; TENT
b284: a5 2d        LDA $2d     ; in map -> can't use
b286: 4a           LSR
b287: b0 10        BCS +$10  [$b299]
b289: ce 36 60     DEC $6036   ; use one
b28c: a9 1e        LDA #$1e
b28e: 20 3f b5     JSR $b53f   ; Restore HP (amount in A) for all warriors
b291: a9 1a        LDA #$1a
b293: 20 e0 b2     JSR $b2e0   ; Display message A, and save if A is pressed (and set C)
b296: 4c 1d b1     JMP $b11d   ; ITEM screen!
b299: a9 1b        LDA #$1b
b29b: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b29e: 4c 48 b1     JMP $b148

; CABIN
b2a1: a5 2d        LDA $2d     ; in map -> can't use
b2a3: 4a           LSR
b2a4: b0 10        BCS +$10  [$b2b6]
b2a6: ce 37 60     DEC $6037   ; use one
b2a9: a9 3c        LDA #$3c
b2ab: 20 3f b5     JSR $b53f   ; Restore HP (amount in A) for all warriors
b2ae: a9 1c        LDA #$1c
b2b0: 20 e0 b2     JSR $b2e0   ; Display message A, and save if A is pressed (and set C)
b2b3: 4c 1d b1     JMP $b11d   ; ITEM screen!
b2b6: a9 1d        LDA #$1d
b2b8: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b2bb: 4c 48 b1     JMP $b148

; HOUSE
b2be: a5 2d        LDA $2d     ; in map -> can't use
b2c0: 4a           LSR
b2c1: b0 15        BCS +$15  [$b2d8]
b2c3: ce 38 60     DEC $6038   ; use one
b2c6: a9 78        LDA #$78
b2c8: 20 3f b5     JSR $b53f   ; Restore HP (amount in A) for all warriors
b2cb: a9 1e        LDA #$1e
b2cd: 20 e0 b2     JSR $b2e0   ; Display message A, and save if A is pressed (and set C)
b2d0: 90 03        BCC +$03  [$b2d5]
b2d2: 20 f3 ab     JSR $abf3   ; Restore magic (Inn/house) BUG should be after the JSR b53f
b2d5: 4c 1d b1     JMP $b11d   ; ITEM screen!
b2d8: a9 1f        LDA #$1f
b2da: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b2dd: 4c 48 b1     JMP $b148

; Display message A, and save if A is pressed (and set C)
b2e0: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b2e3: 20 3c c4     JSR $c43c   ; Clear sprites
b2e6: 20 25 b6     JSR $b625   ; Wait for A or B to be pressed
b2e9: a5 20        LDA $20
b2eb: 29 80        AND #$80
b2ed: d0 05        BNE +$05  [$b2f4]
b2ef: 20 79 b7     JSR $b779   ; $7f=0 and clear (tile 0) the out-of-battle message window
b2f2: 18           CLC
b2f3: 60           RTS
b2f4: a9 3f        LDA #$3f    ; "Now saving..." message
b2f6: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b2f9: 20 69 ab     JSR $ab69   ; SAVE!
b2fc: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b2ff: 38           SEC
b300: 60           RTS

; HEAL[potion]
b301: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b304: a9 20        LDA #$20
b306: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b309: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b30c: b0 21        BCS +$21  [$b32f]
b30e: a5 62        LDA $62
b310: 6a           ROR
b311: 6a           ROR
b312: 6a           ROR
b313: 29 c0        AND #$c0
b315: aa           TAX
b316: bd 01 61     LDA $6101,X
b319: c9 01        CMP #$01
b31b: f0 15        BEQ +$15  [$b332]
b31d: c9 02        CMP #$02
b31f: f0 11        BEQ +$11  [$b332]
b321: a9 1e        LDA #$1e
b323: 20 61 b5     JSR $b561   ; Restore HP (amount in A) for warrior X
b326: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b329: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b32c: ce 39 60     DEC $6039
b32f: 4c 1d b1     JMP $b11d   ; ITEM screen!
b332: 20 26 db     JSR $db26   ; "can't do that" buzz?
b335: 4c 09 b3     JMP $b309

; PURE[potion]
b338: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b33b: a9 21        LDA #$21
b33d: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b340: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b343: b0 ea        BCS +$ea  [$b32f]
b345: a9 03        LDA #$03
b347: 85 10        STA $10
b349: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b34c: b0 0c        BCS +$0c  [$b35a]
b34e: ce 3a 60     DEC $603a
b351: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b354: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b357: 4c 1d b1     JMP $b11d   ; ITEM screen!
b35a: 20 26 db     JSR $db26   ; "can't do that" buzz?
b35d: 4c 40 b3     JMP $b340

; SOFT[potion]
b360: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b363: a9 22        LDA #$22
b365: 20 2b b9     JSR $b92b   ; Display out-of-battle magic message A
b368: 20 a0 b3     JSR $b3a0   ; Out-of-battle magic target select: target in $62, CC if A pressed
b36b: b0 c2        BCS +$c2  [$b32f]
b36d: a9 02        LDA #$02
b36f: 85 10        STA $10
b371: 20 88 b3     JSR $b388   ; Cure warrior $62 status in $10
b374: b0 0c        BCS +$0c  [$b382]
b376: ce 3b 60     DEC $603b
b379: 20 00 b4     JSR $b400   ; Display out-of-battle magic target select screen
b37c: 20 13 b6     JSR $b613   ; Wait for A or B to be pressed, then bleep
b37f: 4c 1d b1     JMP $b11d   ; ITEM screen!
b382: 20 26 db     JSR $db26   ; "can't do that" buzz?
b385: 4c 68 b3     JMP $b368

; Cure warrior $62 status in $10
b388: a5 62        LDA $62
b38a: 6a           ROR
b38b: 6a           ROR
b38c: 6a           ROR
b38d: 29 c0        AND #$c0
b38f: aa           TAX
b390: bd 01 61     LDA $6101,X
b393: c5 10        CMP $10
b395: f0 02        BEQ +$02  [$b399]
b397: 38           SEC
b398: 60           RTS
b399: a9 00        LDA #$00
b39b: 9d 01 61     STA $6101,X
b39e: 18           CLC
b39f: 60           RTS

; Out-of-battle magic target select: target in $62, CC if A pressed
b3a0: a9 00        LDA #$00
b3a2: 85 62        STA $62
b3a4: a9 00        LDA #$00
b3a6: 85 24        STA $24
b3a8: 85 25        STA $25
b3aa: 20 3c c4     JSR $c43c   ; Clear sprites
b3ad: 20 ee b3     JSR $b3ee   ; Show out-of-battle magic target select screen cursor
b3b0: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
b3b3: a5 24        LDA $24
b3b5: d0 2d        BNE +$2d  [$b3e4]
b3b7: a5 25        LDA $25
b3b9: d0 2e        BNE +$2e  [$b3e9]
b3bb: a5 20        LDA $20
b3bd: 29 03        AND #$03
b3bf: c5 61        CMP $61
b3c1: f0 e1        BEQ +$e1  [$b3a4]
b3c3: 85 61        STA $61
b3c5: c9 00        CMP #$00
b3c7: f0 db        BEQ +$db  [$b3a4]
b3c9: c9 01        CMP #$01
b3cb: d0 08        BNE +$08  [$b3d5]
b3cd: a5 62        LDA $62     ;; RIGHT
b3cf: 18           CLC
b3d0: 69 01        ADC #$01
b3d2: 4c da b3     JMP $b3da
b3d5: a5 62        LDA $62     ;; LEFT
b3d7: 38           SEC
b3d8: e9 01        SBC #$01
b3da: 29 03        AND #$03
b3dc: 85 62        STA $62
b3de: 20 9d ad     JSR $ad9d   ; Sound stuff (menu change bleep?)
b3e1: 4c a4 b3     JMP $b3a4
b3e4: 20 84 ad     JSR $ad84   ;; A button ; Sound stuff (menu move bleep?)
b3e7: 18           CLC
b3e8: 60           RTS
b3e9: 20 84 ad     JSR $ad84   ;; B button ; Sound stuff (menu move bleep?)
b3ec: 38           SEC
b3ed: 60           RTS

; Show out-of-battle magic target select screen cursor
b3ee: a6 62        LDX $62
b3f0: bd fc b3     LDA $b3fc,X
b3f3: 85 40        STA $40
b3f5: a9 68        LDA #$68
b3f7: 85 41        STA $41
b3f9: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; X positions for out-of-battle magic target select screen cursor
b3fc: 10 48 80 b8

; Display out-of-battle magic target select screen
b400: a9 00        LDA #$00
b402: 8d 01 20     STA $2001
b405: 85 37        STA $37
b407: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
b40a: a9 0b        LDA #$0b
b40c: 85 39        STA $39
b40e: a9 01        LDA #$01
b410: 85 38        STA $38
b412: a9 1e        LDA #$1e
b414: 85 3c        STA $3c
b416: a9 08        LDA #$08
b418: 85 3d        STA $3d
b41a: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
b41d: 20 24 b4     JSR $b424
b420: 4c 80 b7     JMP $b780   ; wait for v-blank, upload palettes, and some other stuff
b423: 60           RTS
b424: a2 00        LDX #$00
b426: a9 04        LDA #$04
b428: 85 3a        STA $3a
b42a: a9 11        LDA #$11
b42c: 85 3b        STA $3b
b42e: 20 45 b4     JSR $b445
b431: c6 3b        DEC $3b
b433: a2 02        LDX #$02
b435: 20 45 b4     JSR $b445
b438: c6 3b        DEC $3b
b43a: a2 04        LDX #$04
b43c: 20 45 b4     JSR $b445
b43f: c6 3b        DEC $3b
b441: c6 3b        DEC $3b
b443: a2 06        LDX #$06
b445: bd 52 b4     LDA $b452,X
b448: 85 3e        STA $3e
b44a: bd 53 b4     LDA $b453,X
b44d: 85 3f        STA $3f
b44f: 4c 44 b9     JMP $b944   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Display out-of-battle magic target select text data
b452: 5a b4        .DW $b45a
b454: 70 b4        .DW $b470
b456: 86 b4        .DW $b486
b458: 9b b4        .DW $b49b

b45a: 7a 10 06 ff ff ff 7a 11 06 ff ff ff 7a 12 06 ff ff ff 7a 13 06 00 ; /<W1 MaxHP>   /<W2 MaxHP>   /<W3 MaxHP>   /<W4 MaxHP>
b470: ff 10 05 ff ff ff ff 11 05 ff ff ff ff 12 05 ff ff ff ff 13 05 00 ; " <W1 HP>    <W2 HP>    <W3 HP>    <W4 HP>"
b486: 10 02 ff ff ff ff 11 02 ff ff ff ff 12 02 ff ff ff ff 13 02 00 ; <W1 status>    <W2 status>    <W3 status>    <W4 status>
b49b: 10 00 ff ff ff 11 00 ff ff ff 12 00 ff ff ff 13 00 00  ; <W1 name>   <W2 name>   <W3 name>   <W4 name>

b4ad: a9 00        LDA #$00
b4af: 8d 01 20     STA $2001
b4b2: a9 00        LDA #$00
b4b4: 85 37        STA $37
b4b6: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
b4b9: a2 00        LDX #$00
b4bb: 20 10 b5     JSR $b510   ; Draw window (X)
b4be: a9 23        LDA #$23
b4c0: 20 59 b9     JSR $b959
b4c3: a2 04        LDX #$04
b4c5: 20 10 b5     JSR $b510   ; Draw window (X)
b4c8: a9 24        LDA #$24
b4ca: 20 59 b9     JSR $b959
b4cd: a2 08        LDX #$08
b4cf: 20 10 b5     JSR $b510   ; Draw window (X)
b4d2: a9 25        LDA #$25
b4d4: 20 59 b9     JSR $b959
b4d7: a2 0c        LDX #$0c
b4d9: 20 10 b5     JSR $b510   ; Draw window (X)
b4dc: a9 26        LDA #$26
b4de: 20 59 b9     JSR $b959
b4e1: a2 10        LDX #$10
b4e3: 20 10 b5     JSR $b510   ; Draw window (X)
b4e6: a9 27        LDA #$27
b4e8: 20 59 b9     JSR $b959
b4eb: a2 14        LDX #$14
b4ed: 20 10 b5     JSR $b510   ; Draw window (X)
b4f0: a9 28        LDA #$28
b4f2: 20 59 b9     JSR $b959
b4f5: 20 3c c4     JSR $c43c   ; Clear sprites
b4f8: a9 58        LDA #$58
b4fa: 85 40        STA $40
b4fc: a9 20        LDA #$20
b4fe: 85 41        STA $41
b500: a5 66        LDA $66
b502: 6a           ROR
b503: 6a           ROR
b504: 6a           ROR
b505: 29 c0        AND #$c0
b507: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
b50a: 20 83 b7     JSR $b783
b50d: 4c 13 b6     JMP $b613   ; Wait for A or B to be pressed, then bleep

; Draw window (X)
b510: bd 27 b5     LDA $b527,X
b513: 85 38        STA $38
b515: bd 28 b5     LDA $b528,X
b518: 85 39        STA $39
b51a: bd 29 b5     LDA $b529,X
b51d: 85 3c        STA $3c
b51f: bd 2a b5     LDA $b52a,X
b522: 85 3d        STA $3d
b524: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; Window coordinates
;      X  Y  W  H
b527: 01 03 08 05
b52b: 09 03 0e 05
b52f: 17 03 08 05
b533: 04 08 17 07
b537: 01 0f 0e 0d
b53b: 0f 0f 10 0d

; Restore HP (amount in A) for all warriors
b53f: a2 00        LDX #$00
b541: 20 56 b5     JSR $b556
b544: a2 40        LDX #$40
b546: 20 56 b5     JSR $b556
b549: a2 80        LDX #$80
b54b: 20 56 b5     JSR $b556
b54e: a2 c0        LDX #$c0
b550: 20 56 b5     JSR $b556
b553: 4c 00 b4     JMP $b400   ; Display out-of-battle magic target select screen
b556: bc 01 61     LDY $6101,X
b559: c0 01        CPY #$01
b55b: f0 34        BEQ +$34  [$b591]
b55d: c0 02        CPY #$02
b55f: f0 30        BEQ +$30  [$b591]
; Restore HP (amount in A) for warrior X
b561: 85 10        STA $10
b563: 18           CLC
b564: 7d 0a 61     ADC $610a,X
b567: 9d 0a 61     STA $610a,X
b56a: bd 0b 61     LDA $610b,X
b56d: 69 00        ADC #$00
b56f: 9d 0b 61     STA $610b,X
b572: dd 0d 61     CMP $610d,X
b575: f0 1b        BEQ +$1b  [$b592]
b577: b0 23        BCS +$23  [$b59c]
b579: a9 57        LDA #$57
b57b: 85 4b        STA $4b
b57d: a9 30        LDA #$30
b57f: 8d 04 40     STA $4004
b582: a9 7f        LDA #$7f
b584: 8d 05 40     STA $4005
b587: a9 00        LDA #$00
b589: 8d 06 40     STA $4006
b58c: 8d 07 40     STA $4007
b58f: a5 10        LDA $10
b591: 60           RTS
b592: bd 0a 61     LDA $610a,X
b595: dd 0c 61     CMP $610c,X
b598: b0 02        BCS +$02  [$b59c]
b59a: 90 dd        BCC +$dd  [$b579]
b59c: bd 0c 61     LDA $610c,X
b59f: 9d 0a 61     STA $610a,X
b5a2: bd 0d 61     LDA $610d,X
b5a5: 9d 0b 61     STA $610b,X
b5a8: 4c 79 b5     JMP $b579

b5ab: 60           RTS

; Item screen movement ($62)
b5ac: a5 20        LDA $20
b5ae: 29 0f        AND #$0f
b5b0: c5 61        CMP $61
b5b2: f0 f7        BEQ +$f7  [$b5ab]  ; RTS
b5b4: 85 61        STA $61
b5b6: c9 00        CMP #$00
b5b8: f0 f1        BEQ +$f1  [$b5ab]  ; RTS
b5ba: c9 04        CMP #$04
b5bc: 90 33        BCC +$33  [$b5f1]
b5be: d0 16        BNE +$16  [$b5d6]
b5c0: a5 62        LDA $62     ;; DOWN: add 3
b5c2: 18           CLC
b5c3: 69 03        ADC #$03
b5c5: c5 63        CMP $63     ; >= $63? move to top
b5c7: 90 45        BCC +$45  [$b60e]
b5c9: c9 03        CMP #$03
b5cb: 90 41        BCC +$41  [$b60e]
b5cd: 38           SEC
b5ce: e9 03        SBC #$03
b5d0: c9 03        CMP #$03
b5d2: b0 f9        BCS +$f9  [$b5cd]
b5d4: 90 38        BCC +$38  [$b60e]
b5d6: a5 62        LDA $62     ;; UP: sub 3
b5d8: 38           SEC
b5d9: e9 03        SBC #$03
b5db: 10 31        BPL +$31  [$b60e]
b5dd: a5 62        LDA $62     ; < 0? move to bottom
b5df: a6 63        LDX $63
b5e1: e0 03        CPX #$03
b5e3: 90 29        BCC +$29  [$b60e]
b5e5: 18           CLC
b5e6: 69 03        ADC #$03
b5e8: c5 63        CMP $63
b5ea: 90 f9        BCC +$f9  [$b5e5]
b5ec: e9 03        SBC #$03
b5ee: 4c 0e b6     JMP $b60e
b5f1: c9 01        CMP #$01
b5f3: d0 0d        BNE +$0d  [$b602]
b5f5: a5 62        LDA $62     ;; RIGHT: +1
b5f7: 18           CLC
b5f8: 69 01        ADC #$01
b5fa: c5 63        CMP $63     ; >= $63? move to 0
b5fc: 90 10        BCC +$10  [$b60e]
b5fe: a9 00        LDA #$00
b600: f0 0c        BEQ +$0c  [$b60e]
b602: a5 62        LDA $62     ;; LEFT: -1
b604: 38           SEC
b605: e9 01        SBC #$01
b607: 10 05        BPL +$05  [$b60e]
b609: a5 63        LDA $63     ; < 0? move to $63-1
b60b: 38           SEC
b60c: e9 01        SBC #$01
b60e: 85 62        STA $62
b610: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f

; Wait for A or B to be pressed, then bleep
b613: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
b616: a5 24        LDA $24
b618: 05 25        ORA $25
b61a: f0 f7        BEQ +$f7  [$b613]
b61c: a9 00        LDA #$00
b61e: 85 24        STA $24
b620: 85 25        STA $25
b622: 4c 84 ad     JMP $ad84   ; Sound stuff (menu move bleep?)

; Wait for A or B to be pressed
b625: 20 5d b6     JSR $b65d   ; Wait for V-blank, sprites, sound, display, and get buttons
b628: a5 24        LDA $24
b62a: 05 25        ORA $25
b62c: f0 f7        BEQ +$f7  [$b625]
b62e: a9 00        LDA #$00
b630: 85 24        STA $24
b632: 85 25        STA $25
b634: 60           RTS

b635: a9 88        LDA #$88
b637: 85 40        STA $40
b639: a9 18        LDA #$18
b63b: 85 41        STA $41
b63d: a9 00        LDA #$00
b63f: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
b642: a9 d8        LDA #$d8
b644: 85 40        STA $40
b646: a9 40        LDA #$40
b648: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
b64b: a9 88        LDA #$88
b64d: 85 41        STA $41
b64f: a9 c0        LDA #$c0
b651: 20 fd eb     JSR $ebfd   ; Set warrior A sprite at ($40,$41)
b654: a9 88        LDA #$88
b656: 85 40        STA $40
b658: a9 80        LDA #$80
b65a: 4c fd eb     JMP $ebfd   ; Set warrior A sprite at ($40,$41)

; Wait for V-blank, sprites, sound, display, and get buttons
b65d: 20 00 fe     JSR $fe00   ; wait for V-blank
b660: a9 02        LDA #$02    ; upload sprites
b662: 8d 14 40     STA $4014
b665: a5 ff        LDA $ff
b667: 8d 00 20     STA $2000
b66a: a9 00        LDA #$00
b66c: 8d 05 20     STA $2005
b66f: 8d 05 20     STA $2005
b672: a5 4b        LDA $4b
b674: 10 04        BPL +$04  [$b67a]
b676: a9 51        LDA #$51
b678: 85 4b        STA $4b
b67a: a9 0e        LDA #$0e
b67c: 85 57        STA $57
b67e: 20 89 c6     JSR $c689   ; Start music or play current notes
b681: e6 f0        INC $f0
b683: a9 00        LDA #$00
b685: 85 24        STA $24
b687: 85 25        STA $25
b689: 4c c2 d7     JMP $d7c2   ; Get button presses in $20-$25

b68c: a5 20        LDA $20
b68e: 29 0f        AND #$0f
b690: c5 61        CMP $61
b692: f0 16        BEQ +$16  [$b6aa]
b694: 85 61        STA $61
b696: c9 00        CMP #$00
b698: f0 10        BEQ +$10  [$b6aa]
b69a: a2 01        LDX #$01
b69c: c9 04        CMP #$04
b69e: 90 02        BCC +$02  [$b6a2]
b6a0: a2 02        LDX #$02
b6a2: 8a           TXA
b6a3: 45 62        EOR $62
b6a5: 85 62        STA $62
b6a7: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
b6aa: 60           RTS
b6ab: a5 20        LDA $20
b6ad: 29 0c        AND #$0c
b6af: c5 61        CMP $61
b6b1: f0 28        BEQ +$28  [$b6db]
b6b3: 85 61        STA $61
b6b5: c9 00        CMP #$00
b6b7: f0 22        BEQ +$22  [$b6db]
b6b9: c9 04        CMP #$04
b6bb: d0 0d        BNE +$0d  [$b6ca]
b6bd: a5 62        LDA $62
b6bf: 18           CLC
b6c0: 69 01        ADC #$01
b6c2: c5 63        CMP $63
b6c4: 90 10        BCC +$10  [$b6d6]
b6c6: a9 00        LDA #$00
b6c8: f0 0c        BEQ +$0c  [$b6d6]
b6ca: a5 62        LDA $62
b6cc: 38           SEC
b6cd: e9 01        SBC #$01
b6cf: 10 05        BPL +$05  [$b6d6]
b6d1: a5 63        LDA $63
b6d3: 38           SEC
b6d4: e9 01        SBC #$01
b6d6: 85 62        STA $62
b6d8: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
b6db: 60           RTS
b6dc: 60           RTS

; Magic screen cursor movement
b6dd: a5 66        LDA $66
b6df: 6a           ROR
b6e0: 6a           ROR
b6e1: 6a           ROR
b6e2: 29 c0        AND #$c0
b6e4: 85 10        STA $10
b6e6: a5 20        LDA $20
b6e8: 29 0f        AND #$0f
b6ea: c5 61        CMP $61
b6ec: f0 ee        BEQ +$ee  [$b6dc]
b6ee: 85 61        STA $61
b6f0: c9 00        CMP #$00
b6f2: f0 e8        BEQ +$e8  [$b6dc]
b6f4: c9 04        CMP #$04
b6f6: b0 4c        BCS +$4c  [$b744]
b6f8: c9 01        CMP #$01
b6fa: d0 23        BNE +$23  [$b71f]
b6fc: a5 62        LDA $62
b6fe: 18           CLC
b6ff: 69 01        ADC #$01
b701: 29 03        AND #$03
b703: c9 03        CMP #$03
b705: d0 0e        BNE +$0e  [$b715]
b707: a5 62        LDA $62
b709: 29 1c        AND #$1c
b70b: 85 62        STA $62
b70d: 20 68 b7     JSR $b768
b710: f0 ea        BEQ +$ea  [$b6fc]
b712: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b715: e6 62        INC $62
b717: 20 68 b7     JSR $b768
b71a: f0 e0        BEQ +$e0  [$b6fc]
b71c: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b71f: a5 62        LDA $62
b721: 38           SEC
b722: e9 01        SBC #$01
b724: 29 03        AND #$03
b726: c9 03        CMP #$03
b728: d0 10        BNE +$10  [$b73a]
b72a: a5 62        LDA $62
b72c: 29 1c        AND #$1c
b72e: 09 02        ORA #$02
b730: 85 62        STA $62
b732: 20 68 b7     JSR $b768
b735: f0 e8        BEQ +$e8  [$b71f]
b737: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b73a: c6 62        DEC $62
b73c: 20 68 b7     JSR $b768
b73f: f0 de        BEQ +$de  [$b71f]
b741: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b744: d0 11        BNE +$11  [$b757]
b746: a5 62        LDA $62
b748: 18           CLC
b749: 69 04        ADC #$04
b74b: 29 1f        AND #$1f
b74d: 85 62        STA $62
b74f: 20 68 b7     JSR $b768
b752: f0 f2        BEQ +$f2  [$b746]
b754: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b757: a5 62        LDA $62
b759: 38           SEC
b75a: e9 04        SBC #$04
b75c: 29 1f        AND #$1f
b75e: 85 62        STA $62
b760: 20 68 b7     JSR $b768
b763: f0 f2        BEQ +$f2  [$b757]
b765: 4c 71 b7     JMP $b771   ; Menu bleep, and clear out-of-battle message window if $7f
b768: a5 62        LDA $62
b76a: 05 10        ORA $10
b76c: aa           TAX
b76d: bd 00 63     LDA $6300,X
b770: 60           RTS

; Menu bleep, and clear out-of-battle message window if $7f
b771: 20 9d ad     JSR $ad9d   ; Sound stuff (menu change bleep?)
b774: a5 7f        LDA $7f
b776: d0 01        BNE +$01  [$b779]
b778: 60           RTS

; $7f=0 and clear (tile 0) the out-of-battle message window
b779: a9 00        LDA #$00
b77b: 85 7f        STA $7f
b77d: 4c 4d b9     JMP $b94d   ; Clear (tile 0) the out-of-battle message window

; wait for v-blank, upload palettes, and some other stuff
b780: 20 3c c4     JSR $c43c   ; Clear sprites
b783: 20 00 fe     JSR $fe00   ; wait for V-blank
b786: a9 02        LDA #$02    ; upload sprites
b788: 8d 14 40     STA $4014
b78b: 20 50 d8     JSR $d850   ; Upload palettes: BG at $03c0, sprite at $03d0
b78e: a9 08        LDA #$08    ; init $2000
b790: 85 ff        STA $ff
b792: 8d 00 20     STA $2000
b795: a9 1e        LDA #$1e    ; display on
b797: 8d 01 20     STA $2001
b79a: a9 00        LDA #$00
b79c: 8d 05 20     STA $2005
b79f: 8d 05 20     STA $2005
b7a2: a9 0e        LDA #$0e
b7a4: 85 57        STA $57
b7a6: 4c 89 c6     JMP $c689   ; Start music or play current notes

; Cursor point at menu screen character $62
b7a9: a5 62        LDA $62
b7ab: 0a           ASL
b7ac: aa           TAX
b7ad: bd d9 b7     LDA $b7d9,X
b7b0: 85 40        STA $40
b7b2: bd da b7     LDA $b7da,X
b7b5: 85 41        STA $41
b7b7: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Cursor point at menu screen menu item $62
b7ba: a4 62        LDY $62
b7bc: b9 e1 b7     LDA $b7e1,Y
b7bf: 85 41        STA $41
b7c1: a9 10        LDA #$10
b7c3: 85 40        STA $40
b7c5: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Cursor point at item screen item $62
b7c8: a5 62        LDA $62
b7ca: 0a           ASL
b7cb: aa           TAX
b7cc: bd e6 b7     LDA $b7e6,X
b7cf: 85 40        STA $40
b7d1: bd e7 b7     LDA $b7e7,X
b7d4: 85 41        STA $41
b7d6: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Cursor positions for menu screen character select
b7d9: 48 10        .DB $48, $10
b7db: 98 10        .DB $98, $10
b7dd: 48 80        .DB $48, $80
b7df: 98 80        .DB $98, $80

; Cursor Y positions for menu screen menu
b7e1: 90 a0 b0 c0 d0

; Cursor positions for item screen
b7e6: 10 30        .DB $10, $30
b7e8: 58 30        .DB $58, $30
b7ea: a0 30        .DB $a0, $30
b7ec: 10 40        .DB $10, $40
b7ee: 58 40        .DB $58, $40
b7f0: a0 40        .DB $a0, $40
b7f2: 10 50        .DB $10, $50
b7f4: 58 50        .DB $58, $50
b7f6: a0 50        .DB $a0, $50
b7f8: 10 60        .DB $10, $60
b7fa: 58 60        .DB $58, $60
b7fc: a0 60        .DB $a0, $60
b7fe: 10 70        .DB $10, $70
b800: 58 70        .DB $58, $70
b802: a0 70        .DB $a0, $70
b804: 10 80        .DB $10, $80
b806: 58 80        .DB $58, $80
b808: a0 80        .DB $a0, $80
b80a: 10 90        .DB $10, $90
b80c: 58 90        .DB $58, $90
b80e: a0 90        .DB $a0, $90
b810: 10 a0        .DB $10, $a0
b812: 58 a0        .DB $58, $a0
b814: a0 a0        .DB $a0, $a0

; Set cursor for magic screen
b816: a5 62        LDA $62
b818: 85 10        STA $10
b81a: 29 03        AND #$03
b81c: 0a           ASL
b81d: 85 11        STA $11
b81f: 18           CLC
b820: 65 11        ADC $11
b822: 65 11        ADC $11
b824: 0a           ASL
b825: 0a           ASL
b826: 0a           ASL
b827: 18           CLC
b828: 69 50        ADC #$50
b82a: 85 40        STA $40
b82c: a5 10        LDA $10
b82e: 0a           ASL
b82f: 0a           ASL
b830: 29 f0        AND #$f0
b832: 18           CLC
b833: 69 28        ADC #$28
b835: 85 41        STA $41
b837: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

b83a: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
b83d: 20 78 b8     JSR $b878
b840: 20 6e b8     JSR $b86e
b843: 20 11 b9     JSR $b911   ; Display subscreen menu
b846: a9 01        LDA #$01
b848: 20 ef b8     JSR $b8ef   ; Draw window A
b84b: a9 00        LDA #$00
b84d: 20 82 b9     JSR $b982
b850: a9 02        LDA #$02
b852: 20 ef b8     JSR $b8ef   ; Draw window A
b855: a9 40        LDA #$40
b857: 20 82 b9     JSR $b982
b85a: a9 03        LDA #$03
b85c: 20 ef b8     JSR $b8ef   ; Draw window A
b85f: a9 80        LDA #$80
b861: 20 82 b9     JSR $b982
b864: a9 04        LDA #$04
b866: 20 ef b8     JSR $b8ef   ; Draw window A
b869: a9 c0        LDA #$c0
b86b: 4c 82 b9     JMP $b982
b86e: a9 05        LDA #$05
b870: 20 ef b8     JSR $b8ef   ; Draw window A
b873: a9 01        LDA #$01
b875: 4c 38 b9     JMP $b938   ; Display out-of-battle message A
b878: a9 00        LDA #$00
b87a: 20 ef b8     JSR $b8ef   ; Draw window A
b87d: a2 84        LDX #$84
b87f: a0 64        LDY #$64
b881: ad 32 60     LDA $6032
b884: 20 b8 b8     JSR $b8b8
b887: a2 86        LDX #$86
b889: a0 68        LDY #$68
b88b: ad 33 60     LDA $6033
b88e: 20 b8 b8     JSR $b8b8
b891: a2 c4        LDX #$c4
b893: a0 6c        LDY #$6c
b895: ad 34 60     LDA $6034
b898: 20 b8 b8     JSR $b8b8
b89b: a2 c6        LDX #$c6
b89d: a0 70        LDY #$70
b89f: ad 35 60     LDA $6035
b8a2: 20 b8 b8     JSR $b8b8
b8a5: ad 02 20     LDA $2002
b8a8: a9 23        LDA #$23
b8aa: 8d 06 20     STA $2006
b8ad: a9 c9        LDA #$c9
b8af: 8d 06 20     STA $2006
b8b2: a5 17        LDA $17
b8b4: 8d 07 20     STA $2007
b8b7: 60           RTS
b8b8: 46 17        LSR $17
b8ba: 46 17        LSR $17
b8bc: c9 00        CMP #$00
b8be: d0 08        BNE +$08  [$b8c8]
b8c0: a0 76        LDY #$76
b8c2: a9 c0        LDA #$c0
b8c4: 05 17        ORA $17
b8c6: 85 17        STA $17
b8c8: ad 02 20     LDA $2002
b8cb: a9 20        LDA #$20
b8cd: 8d 06 20     STA $2006
b8d0: 8e 06 20     STX $2006
b8d3: 8c 07 20     STY $2007
b8d6: c8           INY
b8d7: 8c 07 20     STY $2007
b8da: c8           INY
b8db: a9 20        LDA #$20
b8dd: 8d 06 20     STA $2006
b8e0: 8a           TXA
b8e1: 18           CLC
b8e2: 69 20        ADC #$20
b8e4: 8d 06 20     STA $2006
b8e7: 8c 07 20     STY $2007
b8ea: c8           INY
b8eb: 8c 07 20     STY $2007
b8ee: 60           RTS

; Draw window A
b8ef: 20 f5 b8     JSR $b8f5   ; Load window position A
b8f2: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; Load window position A
b8f5: 0a           ASL
b8f6: 0a           ASL
b8f7: aa           TAX
b8f8: bd a2 ba     LDA $baa2,X
b8fb: 85 38        STA $38
b8fd: bd a3 ba     LDA $baa3,X
b900: 85 39        STA $39
b902: bd a4 ba     LDA $baa4,X
b905: 85 3c        STA $3c
b907: bd a5 ba     LDA $baa5,X
b90a: 85 3d        STA $3d
b90c: a9 0e        LDA #$0e
b90e: 85 57        STA $57
b910: 60           RTS

; Display subscreen menu
b911: a9 06        LDA #$06
b913: 20 ef b8     JSR $b8ef   ; Draw window A
b916: e6 3b        INC $3b
b918: a9 02        LDA #$02
b91a: 4c 38 b9     JMP $b938   ; Display out-of-battle message A

; Display subscreen title A
b91d: 48           PHA
b91e: a9 07        LDA #$07
b920: 20 ef b8     JSR $b8ef   ; Draw window A
b923: 68           PLA
b924: 4c 38 b9     JMP $b938   ; Display out-of-battle message A

; Sound(?) and display out-of-battle magic message A
b927: a2 54        LDX #$54
b929: 86 4b        STX $4b

; Display out-of-battle magic message A
b92b: 48           PHA
b92c: a9 01        LDA #$01
b92e: 85 37        STA $37
b930: a9 08        LDA #$08
b932: 20 ef b8     JSR $b8ef   ; Draw window A
b935: 68           PLA
b936: e6 7f        INC $7f

; Display out-of-battle message A
b938: 0a           ASL
b939: aa           TAX
b93a: bd 00 85     LDA $8500,X
b93d: 85 3e        STA $3e
b93f: bd 01 85     LDA $8501,X
b942: 85 3f        STA $3f
b944: a9 0e        LDA #$0e
b946: 85 57        STA $57
b948: 85 58        STA $58
b94a: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

; Clear (tile 0) the out-of-battle message window
b94d: a9 01        LDA #$01
b94f: 85 37        STA $37
b951: a9 08        LDA #$08
b953: 20 f5 b8     JSR $b8f5   ; Load window position A
b956: 4c 46 e1     JMP $e146   ; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37

b959: a0 7f        LDY #$7f
b95b: 0a           ASL
b95c: aa           TAX
b95d: bd 00 85     LDA $8500,X
b960: 85 10        STA $10
b962: bd 01 85     LDA $8501,X
b965: 85 11        STA $11
b967: a9 00        LDA #$00
b969: 85 3e        STA $3e
b96b: a9 6c        LDA #$6c
b96d: 85 3f        STA $3f
b96f: b1 10        LDA ($10),Y
b971: c9 10        CMP #$10
b973: d0 02        BNE +$02  [$b977]
b975: 05 66        ORA $66
b977: 99 00 6c     STA $6c00,Y
b97a: 88           DEY
b97b: c0 ff        CPY #$ff
b97d: d0 f0        BNE +$f0  [$b96f]
b97f: 4c 44 b9     JMP $b944   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
b982: 48           PHA
b983: aa           TAX
b984: a9 03        LDA #$03
b986: 85 3f        STA $3f
b988: bd 28 63     LDA $6328,X
b98b: 1d 29 63     ORA $6329,X
b98e: 1d 2a 63     ORA $632a,X
b991: 1d 2b 63     ORA $632b,X
b994: 1d 2c 63     ORA $632c,X
b997: 1d 2d 63     ORA $632d,X
b99a: 1d 2e 63     ORA $632e,X
b99d: 1d 2f 63     ORA $632f,X
b9a0: d0 03        BNE +$03  [$b9a5]
b9a2: 4c 00 ba     JMP $ba00
b9a5: a0 00        LDY #$00
b9a7: bd 20 63     LDA $6320,X
b9aa: 09 80        ORA #$80
b9ac: 99 00 03     STA $0300,Y
b9af: c8           INY
b9b0: a9 7a        LDA #$7a
b9b2: 99 00 03     STA $0300,Y
b9b5: e8           INX
b9b6: c8           INY
b9b7: c0 10        CPY #$10
b9b9: 90 ec        BCC +$ec  [$b9a7]
b9bb: a5 3b        LDA $3b
b9bd: 18           CLC
b9be: 69 0a        ADC #$0a
b9c0: 85 3b        STA $3b
b9c2: a9 00        LDA #$00
b9c4: 8d 0f 03     STA $030f
b9c7: a9 08        LDA #$08
b9c9: 85 3e        STA $3e
b9cb: 20 44 b9     JSR $b944   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
b9ce: a9 00        LDA #$00
b9d0: 85 3e        STA $3e
b9d2: a9 00        LDA #$00
b9d4: 8d 08 03     STA $0308
b9d7: c6 3b        DEC $3b
b9d9: 20 44 b9     JSR $b944   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
b9dc: a9 52        LDA #$52
b9de: 8d 00 03     STA $0300
b9e1: a9 4a        LDA #$4a
b9e3: 8d 01 03     STA $0301
b9e6: a9 8c        LDA #$8c
b9e8: 8d 02 03     STA $0302
b9eb: a9 00        LDA #$00
b9ed: 8d 03 03     STA $0303
b9f0: a9 00        LDA #$00
b9f2: 85 3e        STA $3e
b9f4: c6 3b        DEC $3b
b9f6: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
b9f9: a5 3b        LDA $3b
b9fb: 38           SEC
b9fc: e9 08        SBC #$08
b9fe: 85 3b        STA $3b
ba00: 68           PLA
ba01: 0a           ASL
ba02: 2a           ROL
ba03: 2a           ROL
ba04: 29 03        AND #$03
ba06: 09 10        ORA #$10
ba08: 8d 00 03     STA $0300
ba0b: 8d 03 03     STA $0303
ba0e: a9 05        LDA #$05
ba10: 8d 01 03     STA $0301
ba13: a9 7a        LDA #$7a
ba15: 8d 02 03     STA $0302
ba18: a9 06        LDA #$06
ba1a: 8d 04 03     STA $0304
ba1d: a9 00        LDA #$00
ba1f: 8d 05 03     STA $0305
ba22: a5 3b        LDA $3b
ba24: 18           CLC
ba25: 69 05        ADC #$05
ba27: 85 3b        STA $3b
ba29: a9 00        LDA #$00
ba2b: 85 3e        STA $3e
ba2d: 20 44 b9     JSR $b944   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
ba30: a5 3b        LDA $3b
ba32: 38           SEC
ba33: e9 05        SBC #$05
ba35: 85 3b        STA $3b
ba37: a9 00        LDA #$00
ba39: 8d 01 03     STA $0301
ba3c: a9 01        LDA #$01
ba3e: 8d 02 03     STA $0302
ba41: a9 c6        LDA #$c6
ba43: 8d 03 03     STA $0303
ba46: ad 00 03     LDA $0300
ba49: 8d 04 03     STA $0304
ba4c: a9 03        LDA #$03
ba4e: 8d 05 03     STA $0305
ba51: a9 01        LDA #$01
ba53: 8d 06 03     STA $0306
ba56: ad 00 03     LDA $0300
ba59: 8d 07 03     STA $0307
ba5c: a9 02        LDA #$02
ba5e: 8d 08 03     STA $0308
ba61: a9 00        LDA #$00
ba63: 8d 09 03     STA $0309
ba66: a9 00        LDA #$00
ba68: 85 3e        STA $3e
ba6a: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)

ba6d: a9 09        LDA #$09
ba6f: 20 ef b8     JSR $b8ef   ; Draw window A
ba72: a0 c0        LDY #$c0
ba74: a9 2a        LDA #$2a
ba76: 20 5b b9     JSR $b95b
ba79: a5 66        LDA $66
ba7b: 6a           ROR
ba7c: 6a           ROR
ba7d: 6a           ROR
ba7e: 29 c0        AND #$c0
ba80: aa           TAX
ba81: a0 08        LDY #$08
ba83: bd 00 63     LDA $6300,X
ba86: d0 13        BNE +$13  [$ba9b]
ba88: e8           INX
ba89: bd 00 63     LDA $6300,X
ba8c: d0 0d        BNE +$0d  [$ba9b]
ba8e: e8           INX
ba8f: bd 00 63     LDA $6300,X
ba92: d0 07        BNE +$07  [$ba9b]
ba94: e8           INX
ba95: e8           INX
ba96: 88           DEY
ba97: d0 ea        BNE +$ea  [$ba83]
ba99: 38           SEC
ba9a: 60           RTS
ba9b: 8a           TXA
ba9c: 29 1f        AND #$1f
ba9e: 85 62        STA $62
baa0: 18           CLC
baa1: 60           RTS

; Window positions for out-of-battle magic screen
;      X  Y  W  H
baa2: 02 02 08 08
baa6: 0b 01 0a 0e
baaa: 15 01 0a 0e
baae: 0b 0f 0a 0e
bab2: 15 0f 0a 0e
bab6: 01 0a 0a 05
baba: 02 0f 08 0e
babe: 01 01 08 04
bac2: 01 16 1e 07
bac6: 01 03 1e 13

baca: 85 66        STA $66
bacc: a9 00        LDA #$00
bace: 8d 01 20     STA $2001
bad1: 85 24        STA $24
bad3: 85 25        STA $25
bad5: 85 37        STA $37
bad7: 20 fc ef     JSR $effc   ; Move all weapons/armors to the start of their 4-bytes (which in $66)
bada: 20 f3 bd     JSR $bdf3   ; Draw weapon/armor window (which is spec'd by $66)
badd: 20 9d bd     JSR $bd9d   ; Copy weapon/armor data ($66 selects) from warrior structs to $0300
bae0: 20 92 ed     JSR $ed92   ; Clear weapon/armor stats (which in $66) for all warriors, and ret to bank 14
bae3: 20 80 b7     JSR $b780   ; wait for v-blank, upload palettes, and some other stuff
bae6: a9 01        LDA #$01
bae8: 85 37        STA $37
baea: 20 da ec     JSR $ecda  ;; Draw weapon/armor names for weapon/armor screen
baed: a9 00        LDA #$00
baef: 85 64        STA $64
baf1: 20 3c c4     JSR $c43c   ; Clear sprites
baf4: 20 e6 be     JSR $bee6   ; Set cursor for weapon/armor top menu
baf7: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bafa: a5 24        LDA $24
bafc: d0 0a        BNE +$0a  [$bb08]
bafe: a5 25        LDA $25
bb00: d0 0c        BNE +$0c  [$bb0e]
bb02: 20 42 bd     JSR $bd42
bb05: 4c f1 ba     JMP $baf1
bb08: 20 17 bb     JSR $bb17
bb0b: 4c ed ba     JMP $baed

bb0e: 20 c8 bd     JSR $bdc8   ; Copy weapon/armor data ($66 selects) from $0300 to warrior structs
bb11: 20 fc ef     JSR $effc   ; Move all weapons/armors to the start of their 4-bytes (which in $66)
bb14: 4c 1b ee     JMP $ee1b   ; Apply weapon/armor equips (which in $66)

bb17: 20 84 ad     JSR $ad84   ; Sound stuff (menu move bleep?)
bb1a: a9 00        LDA #$00
bb1c: 85 62        STA $62
bb1e: 85 63        STA $63
bb20: a5 64        LDA $64
bb22: d0 03        BNE +$03  [$bb27]
bb24: 4c 82 bb     JMP $bb82
bb27: c9 01        CMP #$01
bb29: d0 03        BNE +$03  [$bb2e]
bb2b: 4c 31 bb     JMP $bb31
bb2e: 4c be bb     JMP $bbbe   ; Weapon/armor screen main loop


bb31: 20 3c c4     JSR $c43c   ; Clear sprites
bb34: 20 b5 be     JSR $beb5   ; Setup arrow for weapon/armor screen position $62
bb37: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bb3a: a5 24        LDA $24
bb3c: d0 0b        BNE +$0b  [$bb49]
bb3e: a5 25        LDA $25
bb40: d0 06        BNE +$06  [$bb48]
bb42: 20 6e bd     JSR $bd6e   ; Do weapon/armor screen cursor movement
bb45: 4c 31 bb     JMP $bb31
bb48: 60           RTS
bb49: a5 62        LDA $62
bb4b: 85 63        STA $63
bb4d: 20 3c c4     JSR $c43c   ; Clear sprites
bb50: 20 a4 be     JSR $bea4   ; Do flashing 'trade' arrows
bb53: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bb56: a5 24        LDA $24
bb58: d0 0a        BNE +$0a  [$bb64]
bb5a: a5 25        LDA $25
bb5c: d0 d3        BNE +$d3  [$bb31]
bb5e: 20 6e bd     JSR $bd6e   ; Do weapon/armor screen cursor movement
bb61: 4c 4d bb     JMP $bb4d
bb64: a6 62        LDX $62
bb66: a4 63        LDY $63
bb68: bd 00 03     LDA $0300,X
bb6b: 85 10        STA $10
bb6d: b9 00 03     LDA $0300,Y
bb70: 29 7f        AND #$7f
bb72: 9d 00 03     STA $0300,X
bb75: a5 10        LDA $10
bb77: 29 7f        AND #$7f
bb79: 99 00 03     STA $0300,Y
bb7c: 20 da ec     JSR $ecda  ;; Draw weapon/armor names for weapon/armor screen
bb7f: 4c 31 bb     JMP $bb31

bb82: 20 3c c4     JSR $c43c   ; Clear sprites
bb85: 20 b5 be     JSR $beb5   ; Setup arrow for weapon/armor screen position $62
bb88: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bb8b: a5 24        LDA $24
bb8d: d0 0b        BNE +$0b  [$bb9a]
bb8f: a5 25        LDA $25
bb91: d0 06        BNE +$06  [$bb99]
bb93: 20 6e bd     JSR $bd6e   ; Do weapon/armor screen cursor movement
bb96: 4c 82 bb     JMP $bb82
bb99: 60           RTS
bb9a: a6 62        LDX $62
bb9c: bd 00 03     LDA $0300,X
bb9f: d0 06        BNE +$06  [$bba7]  ; Nothing here? buzz and return
bba1: 20 26 db     JSR $db26   ; "can't do that" buzz?
bba4: 4c 82 bb     JMP $bb82
bba7: 30 07        BMI +$07  [$bbb0]  ; Already equipped? Skip to toggle flag
bba9: 20 0a bc     JSR $bc0a   ; Prepare to equip weapon/armor at $300,$62 (struct index $66) on warrior of class A; return carry set if fail, clear if success
bbac: b0 f3        BCS +$f3  [$bba1]  ; Fail? buzz and return
bbae: a6 62        LDX $62     ; Actually toggle the equipped flag on success
bbb0: bd 00 03     LDA $0300,X
bbb3: 49 80        EOR #$80
bbb5: 9d 00 03     STA $0300,X
bbb8: 20 da ec     JSR $ecda  ;; Draw weapon/armor names for weapon/armor screen
bbbb: 4c 82 bb     JMP $bb82

; Weapon/armor screen main loop
bbbe: 20 3c c4     JSR $c43c   ; Clear sprites
bbc1: 20 b5 be     JSR $beb5   ; Setup arrow for weapon/armor screen position $62
bbc4: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bbc7: a5 24        LDA $24
bbc9: d0 0b        BNE +$0b  [$bbd6]
bbcb: a5 25        LDA $25
bbcd: d0 06        BNE +$06  [$bbd5]
bbcf: 20 6e bd     JSR $bd6e   ; Do weapon/armor screen cursor movement
bbd2: 4c be bb     JMP $bbbe   ; Weapon/armor screen main loop
bbd5: 60           RTS
bbd6: a6 62        LDX $62
bbd8: bd 00 03     LDA $0300,X
bbdb: d0 06        BNE +$06  [$bbe3]
bbdd: 20 26 db     JSR $db26   ; "can't do that" buzz?
bbe0: 4c be bb     JMP $bbbe   ; Weapon/armor screen main loop
bbe3: 20 3c c4     JSR $c43c   ; Clear sprites
bbe6: a5 f0        LDA $f0
bbe8: 4a           LSR
bbe9: 4a           LSR
bbea: b0 03        BCS +$03  [$bbef]
bbec: 20 b5 be     JSR $beb5   ; Setup arrow for weapon/armor screen position $62
bbef: 20 f9 bc     JSR $bcf9   ; Wait for v-blank, get presses, do sounds
bbf2: a5 24        LDA $24
bbf4: d0 07        BNE +$07  [$bbfd]
bbf6: a5 25        LDA $25
bbf8: d0 c4        BNE +$c4  [$bbbe]  ; Weapon/armor screen main loop
bbfa: 4c e3 bb     JMP $bbe3
bbfd: a6 62        LDX $62
bbff: a9 00        LDA #$00
bc01: 9d 00 03     STA $0300,X
bc04: 20 da ec     JSR $ecda  ;; Draw weapon/armor names for weapon/armor screen
bc07: 4c be bb     JMP $bbbe  ; Weapon/armor screen main loop

; Prepare to equip weapon/armor at $300,$62 (struct index $66) on warrior of class A; return carry set if fail, clear if success
bc0a: 38           SEC
bc0b: e9 01        SBC #$01
bc0d: 0a           ASL
bc0e: 85 10        STA $10
bc10: a5 62        LDA $62
bc12: 0a           ASL
bc13: 0a           ASL
bc14: 0a           ASL
bc15: 0a           ASL
bc16: 29 c0        AND #$c0
bc18: aa           TAX
bc19: bd 00 61     LDA $6100,X
bc1c: 0a           ASL
bc1d: aa           TAX
bc1e: bd b9 bc     LDA $bcb9,X  ; Load this warrior's bit into W[$14]
bc21: 85 14        STA $14
bc23: bd ba bc     LDA $bcba,X
bc26: 85 15        STA $15
bc28: a4 66        LDY $66
bc2a: c0 18        CPY #$18
bc2c: d0 3b        BNE +$3b  [$bc69]  ; Go equip armor

; Equip weapon at $300,$62 on warrior of class $10 with bit in W[$14]
bc2e: a6 10        LDX $10      ; Check if warrior with bit W[$14] can equip weapon in $10 
bc30: bd 50 bf     LDA $bf50,X
bc33: 25 14        AND $14
bc35: 85 10        STA $10
bc37: bd 51 bf     LDA $bf51,X
bc3a: 25 15        AND $15
bc3c: 05 10        ORA $10
bc3e: c9 01        CMP #$01
bc40: 90 01        BCC +$01  [$bc43]
bc42: 60           RTS          ; NO: return
bc43: a5 62        LDA $62      ; YES: unequip all other weapons
bc45: 29 0c        AND #$0c
bc47: aa           TAX
bc48: bd 00 03     LDA $0300,X
bc4b: 29 7f        AND #$7f
bc4d: 9d 00 03     STA $0300,X
bc50: bd 01 03     LDA $0301,X
bc53: 29 7f        AND #$7f
bc55: 9d 01 03     STA $0301,X
bc58: bd 02 03     LDA $0302,X
bc5b: 29 7f        AND #$7f
bc5d: 9d 02 03     STA $0302,X
bc60: bd 03 03     LDA $0303,X
bc63: 29 7f        AND #$7f
bc65: 9d 03 03     STA $0303,X
bc68: 60           RTS

; Equip armor at $300,$10 on warrior with bit in W[$14]
bc69: a6 10        LDX $10      ; Check if warrior with bit W[$14] can equip armor in $10 
bc6b: bd a0 bf     LDA $bfa0,X
bc6e: 25 14        AND $14
bc70: 85 10        STA $10
bc72: bd a1 bf     LDA $bfa1,X
bc75: 25 15        AND $15
bc77: 05 10        ORA $10
bc79: c9 01        CMP #$01
bc7b: 90 01        BCC +$01  [$bc7e]
bc7d: 60           RTS          ; NO: return
bc7e: 8a           TXA          ; YES: do stuff
bc7f: 4a           LSR
bc80: aa           TAX
bc81: bd d1 bc     LDA $bcd1,X  ; load armor type byte
bc84: 85 12        STA $12
bc86: a5 62        LDA $62      ;; Loop through all this warrior's armor and unequip any of the same type
bc88: 85 10        STA $10
bc8a: 29 0c        AND #$0c
bc8c: 85 11        STA $11
bc8e: a0 04        LDY #$04
bc90: a5 11        LDA $11      ; Is this the just-equipped armor? next!
bc92: c5 10        CMP $10
bc94: f0 1c        BEQ +$1c  [$bcb2]
bc96: a6 11        LDX $11      ; Is this not currently equipped? next!
bc98: bd 00 03     LDA $0300,X
bc9b: 10 15        BPL +$15  [$bcb2]
bc9d: 38           SEC          ; Is this a different type? next!
bc9e: e9 81        SBC #$81
bca0: aa           TAX
bca1: bd d1 bc     LDA $bcd1,X  ; load armor type byte
bca4: c5 12        CMP $12
bca6: d0 0a        BNE +$0a  [$bcb2]
bca8: a6 11        LDX $11      ; Unequip it!
bcaa: bd 00 03     LDA $0300,X
bcad: 29 7f        AND #$7f
bcaf: 9d 00 03     STA $0300,X
bcb2: e6 11        INC $11      ; next!
bcb4: 88           DEY
bcb5: d0 d9        BNE +$d9  [$bc90]
bcb7: 18           CLC
bcb8: 60           RTS

; Warrior bits, in LSB order?
bcb9: 00 08 00 04 00 02 00 01
bcc1: 80 00 40 00 20 00 10 00
bcc9: 08 00 04 00 02 00 01 00

; Armor type bytes
bcd1: 00 00 00 00 00 00 00 00
bcd9: 00 00 00 00 00 00 00 00
bce1: 01 01 01 01 01 01 01 01
bce9: 01 02 02 02 02 02 02 02
bcf1: 03 03 03 03 03 03 03 03

; Wait for v-blank, get presses, do sounds
bcf9: 20 00 fe     JSR $fe00   ; wait for V-blank
bcfc: a9 02        LDA #$02    ; upload sprites
bcfe: 8d 14 40     STA $4014
bd01: 20 f7 be     JSR $bef7   ; Set palette for selected weapon/armor top menu item
bd04: a5 ff        LDA $ff
bd06: 8d 00 20     STA $2000
bd09: a9 00        LDA #$00
bd0b: 8d 05 20     STA $2005
bd0e: 8d 05 20     STA $2005
bd11: a9 0e        LDA #$0e
bd13: 85 57        STA $57
bd15: 20 89 c6     JSR $c689   ; Start music or play current notes
bd18: e6 f0        INC $f0
bd1a: a9 00        LDA #$00
bd1c: 85 24        STA $24
bd1e: 85 25        STA $25
bd20: e6 f0        INC $f0
bd22: a5 20        LDA $20
bd24: 29 0f        AND #$0f
bd26: 85 17        STA $17
bd28: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
bd2b: a5 24        LDA $24
bd2d: 05 25        ORA $25
bd2f: f0 03        BEQ +$03  [$bd34]
bd31: 4c 84 ad     JMP $ad84   ; Sound stuff (menu move bleep?)
bd34: a5 20        LDA $20
bd36: 29 0f        AND #$0f
bd38: f0 07        BEQ +$07  [$bd41]
bd3a: c5 17        CMP $17
bd3c: f0 03        BEQ +$03  [$bd41]
bd3e: 4c 9d ad     JMP $ad9d   ; Sound stuff (menu change bleep?)
bd41: 60           RTS

bd42: a5 20        LDA $20
bd44: 29 03        AND #$03
bd46: c5 61        CMP $61
bd48: f0 17        BEQ +$17  [$bd61]
bd4a: 85 61        STA $61
bd4c: c9 00        CMP #$00
bd4e: f0 11        BEQ +$11  [$bd61]
bd50: c9 01        CMP #$01
bd52: d0 0e        BNE +$0e  [$bd62]
bd54: a5 64        LDA $64
bd56: 18           CLC
bd57: 69 01        ADC #$01
bd59: c9 03        CMP #$03
bd5b: 90 02        BCC +$02  [$bd5f]
bd5d: a9 00        LDA #$00
bd5f: 85 64        STA $64
bd61: 60           RTS
bd62: a5 64        LDA $64
bd64: 38           SEC
bd65: e9 01        SBC #$01
bd67: b0 f6        BCS +$f6  [$bd5f]
bd69: a9 02        LDA #$02
bd6b: 85 64        STA $64
bd6d: 60           RTS

; Do weapon/armor screen cursor movement
bd6e: a5 20        LDA $20
bd70: 29 0f        AND #$0f
bd72: c5 61        CMP $61
bd74: f0 10        BEQ +$10  [$bd86]
bd76: 85 61        STA $61
bd78: c9 00        CMP #$00
bd7a: f0 0a        BEQ +$0a  [$bd86]
bd7c: c9 04        CMP #$04
bd7e: b0 07        BCS +$07  [$bd87]
bd80: a5 62        LDA $62
bd82: 49 01        EOR #$01
bd84: 85 62        STA $62
bd86: 60           RTS
bd87: d0 0a        BNE +$0a  [$bd93]
bd89: a5 62        LDA $62
bd8b: 18           CLC
bd8c: 69 02        ADC #$02
bd8e: 29 0f        AND #$0f
bd90: 85 62        STA $62
bd92: 60           RTS
bd93: a5 62        LDA $62
bd95: 38           SEC
bd96: e9 02        SBC #$02
bd98: 29 0f        AND #$0f
bd9a: 85 62        STA $62
bd9c: 60           RTS

; Copy weapon/armor data ($66 selects) from warrior structs to $0300
bd9d: a6 66        LDX $66
bd9f: a0 00        LDY #$00
bda1: bd 00 61     LDA $6100,X
bda4: 99 00 03     STA $0300,Y
bda7: bd 01 61     LDA $6101,X
bdaa: 99 01 03     STA $0301,Y
bdad: bd 02 61     LDA $6102,X
bdb0: 99 02 03     STA $0302,Y
bdb3: bd 03 61     LDA $6103,X
bdb6: 99 03 03     STA $0303,Y
bdb9: 8a           TXA
bdba: 18           CLC
bdbb: 69 40        ADC #$40
bdbd: aa           TAX
bdbe: 98           TYA
bdbf: 18           CLC
bdc0: 69 04        ADC #$04
bdc2: a8           TAY
bdc3: c9 10        CMP #$10
bdc5: 90 da        BCC +$da  [$bda1]
bdc7: 60           RTS

; Copy weapon/armor data ($66 selects) from $0300 to warrior structs
bdc8: a6 66        LDX $66
bdca: a0 00        LDY #$00
bdcc: b9 00 03     LDA $0300,Y
bdcf: 9d 00 61     STA $6100,X
bdd2: b9 01 03     LDA $0301,Y
bdd5: 9d 01 61     STA $6101,X
bdd8: b9 02 03     LDA $0302,Y
bddb: 9d 02 61     STA $6102,X
bdde: b9 03 03     LDA $0303,Y
bde1: 9d 03 61     STA $6103,X
bde4: 8a           TXA
bde5: 18           CLC
bde6: 69 40        ADC #$40
bde8: aa           TAX
bde9: 98           TYA
bdea: 18           CLC
bdeb: 69 04        ADC #$04
bded: a8           TAY
bdee: c9 10        CMP #$10
bdf0: 90 da        BCC +$da  [$bdcc]
bdf2: 60           RTS

; Draw weapon/armor window (which is spec'd by $66)
bdf3: 20 02 9c     JSR $9c02   ; clear screen (tile 0 pal 3)
bdf6: a9 00        LDA #$00
bdf8: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
bdfb: a9 34        LDA #$34
bdfd: a6 66        LDX $66
bdff: e0 18        CPX #$18
be01: f0 02        BEQ +$02  [$be05]
be03: a9 3e        LDA #$3e
be05: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be08: a9 01        LDA #$01
be0a: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be0d: a9 35        LDA #$35
be0f: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be12: a9 03        LDA #$03
be14: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be17: a9 02        LDA #$02
be19: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be1c: a9 36        LDA #$36
be1e: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be21: a9 05        LDA #$05
be23: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be26: a9 04        LDA #$04
be28: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be2b: a9 38        LDA #$38
be2d: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be30: a9 07        LDA #$07
be32: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be35: a9 06        LDA #$06
be37: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be3a: a9 3a        LDA #$3a
be3c: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be3f: a9 09        LDA #$09
be41: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be44: a9 08        LDA #$08
be46: 20 5e be     JSR $be5e   ; Draw weapon/armor window A
be49: a9 3c        LDA #$3c
be4b: 20 38 b9     JSR $b938   ; Display out-of-battle message A
be4e: a9 c0        LDA #$c0
be50: 20 2e bf     JSR $bf2e   ; VRAM address = $2300+A
be53: a9 7f        LDA #$7f
be55: 8d 07 20     STA $2007
be58: a9 df        LDA #$df
be5a: 8d 07 20     STA $2007
be5d: 60           RTS

; Draw weapon/armor window A
be5e: 0a           ASL
be5f: 0a           ASL
be60: aa           TAX
be61: bd 7c be     LDA $be7c,X
be64: 85 38        STA $38
be66: bd 7d be     LDA $be7d,X
be69: 85 39        STA $39
be6b: bd 7e be     LDA $be7e,X
be6e: 85 3c        STA $3c
be70: bd 7f be     LDA $be7f,X
be73: 85 3d        STA $3d
be75: a9 0e        LDA #$0e
be77: 85 57        STA $57
be79: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; weapon/armor window positions
be7c: 01 01 07 04
be80: 08 01 17 04
be84: 01 05 08 04
be88: 08 05 17 06
be8c: 01 0b 08 04
be90: 08 0b 17 06
be94: 01 11 08 04
be98: 08 11 17 06
be9c: 01 17 08 04
bea0: 08 17 17 06

; Do flashing 'trade' arrows
bea4: a5 f0        LDA $f0
bea6: 4a           LSR
bea7: 4a           LSR
bea8: b0 0b        BCS +$0b  [$beb5]
beaa: a5 63        LDA $63
beac: 0a           ASL
bead: aa           TAX
beae: bd c6 be     LDA $bec6,X
beb1: 09 04        ORA #$04
beb3: d0 07        BNE +$07  [$bebc]

; Setup arrow for weapon/armor screen position $62
beb5: a5 62        LDA $62
beb7: 0a           ASL
beb8: aa           TAX
beb9: bd c6 be     LDA $bec6,X
bebc: 85 40        STA $40
bebe: bd c7 be     LDA $bec7,X
bec1: 85 41        STA $41
bec3: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; Weapon/armor cursor positions
bec6: 40 38
bec8: 90 38
beca: 40 48
becc: 90 48
bece: 40 68
bed0: 90 68
bed2: 40 78
bed4: 90 78
bed6: 40 98
bed8: 90 98
beda: 40 a8
bedc: 90 a8
bede: 40 c8
bee0: 90 c8
bee2: 40 d8
bee4: 90 d8

; Set cursor for weapon/armor top menu
bee6: a6 64        LDX $64
bee8: bd f4 be     LDA $bef4,X
beeb: 85 40        STA $40
beed: a9 14        LDA #$14
beef: 85 41        STA $41
bef1: 4c 95 ec     JMP $ec95   ; Setup cursor(?) at ($40,$41)

; X positions for weapon/armor top menu
bef4: 48 80 b8

; Set palette for selected weapon/armor top menu item
; except it's not aligned properly, and the two palettes are the same colors
; probably worked in the J version.
bef7: a5 64        LDA $64
bef9: 0a           ASL
befa: 0a           ASL
befb: aa           TAX
befc: a9 c3        LDA #$c3
befe: 20 2e bf     JSR $bf2e   ; VRAM address = $2300+A
bf01: bd 22 bf     LDA $bf22,X
bf04: 8d 07 20     STA $2007
bf07: bd 23 bf     LDA $bf23,X
bf0a: 8d 07 20     STA $2007
bf0d: bd 24 bf     LDA $bf24,X
bf10: 8d 07 20     STA $2007
bf13: bd 25 bf     LDA $bf25,X
bf16: 8d 07 20     STA $2007
bf19: a9 00        LDA #$00
bf1b: 8d 06 20     STA $2006
bf1e: 8d 06 20     STA $2006
bf21: 60           RTS

bf22: af ff ff ff
bf26: ff bf ef ff
bf2a: ff ff ff af

; VRAM address = $2300+A
bf2e: 2c 02 20     BIT $2002
bf31: a0 23        LDY #$23
bf33: 8c 06 20     STY $2006
bf36: 8d 06 20     STA $2006
bf39: 60           RTS

; garbage of the above?
bf3a: bf           .DB $BF
bf3b: ef           .DB $EF
bf3c: ff           .DB $FF
bf3d: ff           .DB $FF
bf3e: ff           .DB $FF
bf3f: ff           .DB $FF
bf40: af           .DB $AF
bf41: 2c 02 20     BIT $2002
bf44: a0 23        LDY #$23
bf46: 8c 06 20     STY $2006
bf49: 8d 06 20     STA $2006
bf4c: 60           RTS
bf4d: 00           BRK
bf4e: 00           BRK
bf4f: 00           BRK

; Classes not allowed to equip the weapon
bf50: e7 0d        .DW $0de7  ; Wooden[nunchucks]
bf52: 8a 02        .DW $028a  ; Small [knife]
bf54: 00 04        .DW $0400  ; Wooden[staff]
bf56: cb 02        .DW $02cb  ; Rapier
bf58: 4d 07        .DW $074d  ; Iron  [hammer]
bf5a: cb 06        .DW $06cb  ; Short [sword]
bf5c: cf 07        .DW $07cf  ; Hand  [axe]
bf5e: cb 02        .DW $02cb  ; Scimtar
bf60: e7 0d        .DW $0de7  ; Iron  [nunchucks]
bf62: 8a 02        .DW $028a  ; Large [knife]
bf64: c7 05        .DW $05c7  ; Iron  [staff]
bf66: cb 02        .DW $02cb  ; Sabre
bf68: cb 06        .DW $06cb  ; Long  [sword]
bf6a: cf 07        .DW $07cf  ; Great [axe]
bf6c: cb 02        .DW $02cb  ; Falchon
bf6e: 8a 02        .DW $028a  ; Silver[knife]
bf70: cb 06        .DW $06cb  ; Silver[sword]
bf72: 4d 07        .DW $074d  ; Silver[hammer]
bf74: cf 07        .DW $07cf  ; Silver[axe]
bf76: cb 06        .DW $06cb  ; Flame [sword]
bf78: cb 06        .DW $06cb  ; Ice   [sword]
bf7a: cb 02        .DW $02cb  ; Dragon[sword]
bf7c: cb 06        .DW $06cb  ; Giant [sword]
bf7e: cb 06        .DW $06cb  ; Sun   [sword]
bf80: cb 02        .DW $02cb  ; Coral [sword]
bf82: cb 06        .DW $06cb  ; Were  [sword]
bf84: cb 02        .DW $02cb  ; Rune  [sword]
bf86: 04 05        .DW $0504  ; Power [staff]
bf88: cf 07        .DW $07cf  ; Light [axe]
bf8a: 6d 0f        .DW $0f6d  ; Heal  [staff]
bf8c: ae 0f        .DW $0fae  ; Mage  [staff]
bf8e: cb 0f        .DW $0fcb  ; Defense
bf90: fe 0f        .DW $0ffe  ; Wizard[staff]
bf92: cb 0f        .DW $0fcb  ; Vorpal
bf94: ca 0f        .DW $0fca  ; CatClaw
bf96: cd 0f        .DW $0fcd  ; Thor  [hammer]
bf98: cb 0f        .DW $0fcb  ; Bane  [sword]
bf9a: ef 0f        .DW $0fef  ; Katana
bf9c: df 0f        .DW $0fdf  ; Xcalber
bf9e: 00 00        .DW $0000  ; Masmune

; Classes not allowed to equip the armor
bfa0: 00 00        .DW $0000  ; Cloth
bfa2: c3 00        .DW $00c3  ; Wooden[armor]
bfa4: cb 06        .DW $06cb  ; Chain [armor]
bfa6: cf 07        .DW $07cf  ; Iron  [armor]
bfa8: df 07        .DW $07df  ; Steel [armor]
bfaa: cb 06        .DW $06cb  ; Silver[armor]
bfac: cf 07        .DW $07cf  ; Flame [armor]
bfae: cf 07        .DW $07cf  ; Ice   [armor]
bfb0: df 0f        .DW $0fdf  ; Opal  [armor]
bfb2: df 0f        .DW $0fdf  ; Dragon[armor]
bfb4: 00 00        .DW $0000  ; Copper[bracelet]
bfb6: 00 00        .DW $0000  ; Silver[bracelet]
bfb8: 00 00        .DW $0000  ; Gold  [bracelet]
bfba: 00 00        .DW $0000  ; Opal  [bracelet]
bfbc: fd 0f        .DW $0ffd  ; White [shirt]
bfbe: fe 0f        .DW $0ffe  ; Black [shirt]
bfc0: cf 07        .DW $07cf  ; Wooden[shield]
bfc2: cf 07        .DW $07cf  ; Iron  [shield]
bfc4: cf 07        .DW $07cf  ; Silver[shield]
bfc6: cf 07        .DW $07cf  ; Flame [shield]
bfc8: cf 07        .DW $07cf  ; Ice   [shield]
bfca: df 0f        .DW $0fdf  ; Opal  [shield]
bfcc: df 0f        .DW $0fdf  ; Aegis [shield]
bfce: cb 02        .DW $02cb  ; Buckler
bfd0: 08 02        .DW $0208  ; ProCape
bfd2: 00 00        .DW $0000  ; Cap
bfd4: cf 07        .DW $07cf  ; Wooden[helmet]
bfd6: cf 07        .DW $07cf  ; Iron  [helmet]
bfd8: cf 07        .DW $07cf  ; Silver[helmet]
bfda: df 0f        .DW $0fdf  ; Opal  [helmet]
bfdc: cf 0f        .DW $0fcf  ; Heal  [helmet]
bfde: 00 00        .DW $0000  ; Ribbon
bfe0: 00 00        .DW $0000  ; Gloves
bfe2: cf 07        .DW $07cf  ; Copper[gauntlet]
bfe4: cf 07        .DW $07cf  ; Iron  [gauntlet]
bfe6: cb 07        .DW $07cb  ; Silver[gauntlet]
bfe8: cb 0f        .DW $0fcb  ; Zeus  [gauntlet]
bfea: cb 07        .DW $07cb  ; Power [gauntlet]
bfec: df 0f        .DW $0fdf  ; Opal  [gauntlet]
bfee: 00 00        .DW $0000  ; ProRing

bff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
